Hello community,

here is the log from the commit of package python-maxminddb for 
openSUSE:Factory checked in at 2020-11-12 22:36:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-maxminddb (Old)
 and      /work/SRC/openSUSE:Factory/.python-maxminddb.new.24930 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-maxminddb"

Thu Nov 12 22:36:47 2020 rev:10 rq:846966 version:2.0.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-maxminddb/python-maxminddb.changes        
2020-08-25 12:37:03.421385339 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-maxminddb.new.24930/python-maxminddb.changes 
    2020-11-12 22:37:20.790013692 +0100
@@ -1,0 +2,8 @@
+Sun Nov  1 18:30:49 UTC 2020 - Sebastian Wagner <[email protected]>
+
+- update to version 2.0.3:
+  - The 2.0.0 release unintentionally required Python to be compiled with
+    ``mmap`` support for the module to work. ``mmap`` is now optional
+    again. Reported by john-heasman-cg. GitHub #76.
+
+-------------------------------------------------------------------

Old:
----
  maxminddb-2.0.2.tar.gz

New:
----
  maxminddb-2.0.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-maxminddb.spec ++++++
--- /var/tmp/diff_new_pack.WhW5kK/_old  2020-11-12 22:37:21.726014669 +0100
+++ /var/tmp/diff_new_pack.WhW5kK/_new  2020-11-12 22:37:21.734014677 +0100
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %bcond_without python2
 Name:           python-maxminddb
-Version:        2.0.2
+Version:        2.0.3
 Release:        0
 Summary:        Reader for the MaxMind DB format
 License:        Apache-2.0

++++++ maxminddb-2.0.2.tar.gz -> maxminddb-2.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/HISTORY.rst 
new/maxminddb-2.0.3/HISTORY.rst
--- old/maxminddb-2.0.2/HISTORY.rst     2020-07-28 19:37:26.000000000 +0200
+++ new/maxminddb-2.0.3/HISTORY.rst     2020-10-16 23:27:53.000000000 +0200
@@ -3,6 +3,13 @@
 History
 -------
 
+2.0.3 (2020-10-16)
+++++++++++++++++++
+
+* The 2.0.0 release unintentionally required Python to be compiled with
+  ``mmap`` support for the module to work. ``mmap`` is now optional
+  again. Reported by john-heasman-cg. GitHub #76.
+
 2.0.2 (2020-07-28)
 ++++++++++++++++++
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/PKG-INFO new/maxminddb-2.0.3/PKG-INFO
--- old/maxminddb-2.0.2/PKG-INFO        2020-07-28 19:38:03.624959200 +0200
+++ new/maxminddb-2.0.3/PKG-INFO        2020-10-16 23:29:09.699857500 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: maxminddb
-Version: 2.0.2
+Version: 2.0.3
 Summary: Reader for the MaxMind DB format
 Home-page: http://www.maxmind.com/
 Author: Gregory Oschwald
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/.buildinfo 
new/maxminddb-2.0.3/docs/html/.buildinfo
--- old/maxminddb-2.0.2/docs/html/.buildinfo    2020-07-28 19:38:03.000000000 
+0200
+++ new/maxminddb-2.0.3/docs/html/.buildinfo    2020-10-16 23:29:09.000000000 
+0200
@@ -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: d7f34a133804ab374ff495791ddf8e79
+config: 176cbc91dff303d9dec7ec6a4181778f
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/_static/basic.css 
new/maxminddb-2.0.3/docs/html/_static/basic.css
--- old/maxminddb-2.0.2/docs/html/_static/basic.css     2020-07-28 
19:38:03.000000000 +0200
+++ new/maxminddb-2.0.3/docs/html/_static/basic.css     2020-10-16 
23:29:09.000000000 +0200
@@ -693,7 +693,7 @@
     overflow-y: hidden;  /* fixes display issues on Chrome browsers */
 }
 
-pre, div[class|="highlight"] {
+pre, div[class*="highlight-"] {
     clear: both;
 }
 
@@ -704,7 +704,7 @@
     hyphens: none;
 }
 
-div[class^="highlight-"] {
+div[class*="highlight-"] {
     margin: 1em 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/maxminddb-2.0.2/docs/html/_static/documentation_options.js 
new/maxminddb-2.0.3/docs/html/_static/documentation_options.js
--- old/maxminddb-2.0.2/docs/html/_static/documentation_options.js      
2020-07-28 19:38:03.000000000 +0200
+++ new/maxminddb-2.0.3/docs/html/_static/documentation_options.js      
2020-10-16 23:29:09.000000000 +0200
@@ -1,6 +1,6 @@
 var DOCUMENTATION_OPTIONS = {
     URL_ROOT: 
document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: '2.0.2',
+    VERSION: '2.0.3',
     LANGUAGE: 'None',
     COLLAPSE_INDEX: false,
     BUILDER: 'html',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/_static/pygments.css 
new/maxminddb-2.0.3/docs/html/_static/pygments.css
--- old/maxminddb-2.0.2/docs/html/_static/pygments.css  2020-07-28 
19:38:03.000000000 +0200
+++ new/maxminddb-2.0.3/docs/html/_static/pygments.css  2020-10-16 
23:29:09.000000000 +0200
@@ -1,5 +1,10 @@
+pre { line-height: 125%; margin: 0; }
+td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 
5px; }
+span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 
5px; }
+td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 
5px 0 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 
5px 0 5px; }
 .highlight .hll { background-color: #ffffcc }
-.highlight  { background: #eeffcc; }
+.highlight { background: #eeffcc; }
 .highlight .c { color: #408090; font-style: italic } /* Comment */
 .highlight .err { border: 1px solid #FF0000 } /* Error */
 .highlight .k { color: #007020; font-weight: bold } /* Keyword */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/_static/searchtools.js 
new/maxminddb-2.0.3/docs/html/_static/searchtools.js
--- old/maxminddb-2.0.2/docs/html/_static/searchtools.js        2020-07-21 
19:29:28.000000000 +0200
+++ new/maxminddb-2.0.3/docs/html/_static/searchtools.js        2020-10-13 
16:49:32.000000000 +0200
@@ -166,8 +166,7 @@
           objectterms.push(tmp[i].toLowerCase());
       }
 
-      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || 
tmp[i].match(/^\d+$/) ||
-          tmp[i] === "") {
+      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
         // skip this "word"
         continue;
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/genindex.html 
new/maxminddb-2.0.3/docs/html/genindex.html
--- old/maxminddb-2.0.2/docs/html/genindex.html 2020-07-28 19:38:03.000000000 
+0200
+++ new/maxminddb-2.0.3/docs/html/genindex.html 2020-10-16 23:29:09.000000000 
+0200
@@ -4,8 +4,8 @@
 <html>
   <head>
     <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Index &#8212; maxminddb 2.0.2 documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Index &#8212; maxminddb 2.0.3 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script id="documentation_options" data-url_root="./" 
src="_static/documentation_options.js"></script>
@@ -25,7 +25,7 @@
         <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">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.3 
documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Index</a></li> 
       </ul>
     </div>  
@@ -235,13 +235,13 @@
         <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">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.3 
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 2013-2020, MaxMind, Inc..
-      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.1.2.
+      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.2.1.
     </div>
   </body>
 </html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/index.html 
new/maxminddb-2.0.3/docs/html/index.html
--- old/maxminddb-2.0.2/docs/html/index.html    2020-07-28 19:38:03.000000000 
+0200
+++ new/maxminddb-2.0.3/docs/html/index.html    2020-10-16 23:29:09.000000000 
+0200
@@ -4,8 +4,8 @@
 <html>
   <head>
     <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>MaxMind DB Python Module &#8212; maxminddb 2.0.2 
documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>MaxMind DB Python Module &#8212; maxminddb 2.0.3 
documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script id="documentation_options" data-url_root="./" 
src="_static/documentation_options.js"></script>
@@ -25,7 +25,7 @@
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="#">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="#">maxminddb 2.0.3 
documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">MaxMind DB Python 
Module</a></li> 
       </ul>
     </div>  
@@ -138,7 +138,7 @@
 
 <dl class="py function">
 <dt id="maxminddb.open_database">
-<code class="sig-prename descclassname">maxminddb.</code><code class="sig-name 
descname">open_database</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="n">database</span><span class="p">:</span> <span 
class="n">Union<span class="p">[</span>AnyStr<span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/os.html#os.PathLike"; title="(in Python 
v3.8)">os.PathLike</a><span class="p">, </span>IO<span 
class="p">]</span></span></em>, <em class="sig-param"><span 
class="n">mode</span><span class="p">:</span> <span class="n"><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></span> <span class="o">=</span> <span 
class="default_value">0</span></em><span class="sig-paren">)</span> &#x2192; 
Union<span class="p">[</span><a class="reference internal" 
href="#maxminddb.reader.Reader" 
title="maxminddb.reader.Reader">maxminddb.reader.Reader</a><span class="p">, 
</span>Reader<span class="p">]</span><a class="headerlink" 
href="#maxminddb.open_database" title="Permalink to this definition">¶</a></dt>
+<code class="sig-prename descclassname">maxminddb.</code><code class="sig-name 
descname">open_database</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="n">database</span><span class="p">:</span> <span 
class="n">Union<span class="p">[</span>AnyStr<span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/os.html#os.PathLike"; title="(in Python 
v3.9)">os.PathLike</a><span class="p">, </span>IO<span 
class="p">]</span></span></em>, <em class="sig-param"><span 
class="n">mode</span><span class="p">:</span> <span class="n"><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></span> <span class="o">=</span> <span 
class="default_value">0</span></em><span class="sig-paren">)</span> &#x2192; 
Union<span class="p">[</span><a class="reference internal" 
href="#maxminddb.reader.Reader" 
title="maxminddb.reader.Reader">maxminddb.reader.Reader</a><span class="p">, 
</span><a class="reference internal" href="#maxminddb.Reader" 
title="maxminddb.Reader">Reader</a><span class="p">]</span><a 
class="headerlink" href="#maxminddb.open_database" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>Open a MaxMind DB database</p>
 <dl class="simple">
 <dt>Arguments:</dt><dd><dl class="simple">
@@ -172,7 +172,7 @@
 <dl class="py exception">
 <dt id="maxminddb.errors.InvalidDatabaseError">
 <em class="property">exception </em><code class="sig-prename 
descclassname">maxminddb.errors.</code><code class="sig-name 
descname">InvalidDatabaseError</code><a class="headerlink" 
href="#maxminddb.errors.InvalidDatabaseError" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>Bases: <a class="reference external" 
href="https://docs.python.org/3/library/exceptions.html#RuntimeError"; 
title="(in Python v3.8)"><code class="xref py py-class docutils literal 
notranslate"><span class="pre">RuntimeError</span></code></a></p>
+<dd><p>Bases: <a class="reference external" 
href="https://docs.python.org/3/library/exceptions.html#RuntimeError"; 
title="(in Python v3.9)"><code class="xref py py-class docutils literal 
notranslate"><span class="pre">RuntimeError</span></code></a></p>
 <p>This error is thrown when unexpected data is found in the database.</p>
 </dd></dl>
 
@@ -183,7 +183,7 @@
 <dl class="py class">
 <dt id="maxminddb.reader.Metadata">
 <em class="property">class </em><code class="sig-prename 
descclassname">maxminddb.reader.</code><code class="sig-name 
descname">Metadata</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="o">**</span><span 
class="n">kwargs</span></em><span class="sig-paren">)</span><a 
class="headerlink" href="#maxminddb.reader.Metadata" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>Bases: <a class="reference external" 
href="https://docs.python.org/3/library/functions.html#object"; title="(in 
Python v3.8)"><code class="xref py py-class docutils literal notranslate"><span 
class="pre">object</span></code></a></p>
+<dd><p>Bases: <a class="reference external" 
href="https://docs.python.org/3/library/functions.html#object"; title="(in 
Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span 
class="pre">object</span></code></a></p>
 <p>Metadata for the MaxMind DB reader</p>
 <dl class="py attribute">
 <dt id="maxminddb.reader.Metadata.binary_format_major_version">
@@ -192,7 +192,7 @@
 database.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -204,7 +204,7 @@
 database.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -215,7 +215,7 @@
 <dd><p>The Unix epoch for the build time of the database.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -226,7 +226,7 @@
 <dd><p>A string identifying the database type, e.g., “GeoIP2-City”.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.8)">str</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.9)">str</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -237,7 +237,7 @@
 <dd><p>A map from locales to text descriptions of the database.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#dict"; title="(in Python 
v3.8)">dict</a>(<a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.8)">str</a>, <a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.8)">str</a>)</p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#dict"; title="(in Python 
v3.9)">dict</a>(<a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.9)">str</a>, <a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.9)">str</a>)</p>
 </dd>
 </dl>
 </dd></dl>
@@ -250,7 +250,7 @@
 both IPv4 and IPv6 lookups.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -261,7 +261,7 @@
 <dd><p>A list of locale codes supported by the databse.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#list"; title="(in Python 
v3.8)">list</a>(<a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.8)">str</a>)</p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#list"; title="(in Python 
v3.9)">list</a>(<a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.9)">str</a>)</p>
 </dd>
 </dl>
 </dd></dl>
@@ -272,7 +272,7 @@
 <dd><p>The number of nodes in the database.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -283,7 +283,7 @@
 <dd><p>The bit size of a record in the search tree.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -294,7 +294,7 @@
 <dd><p>The size of a node in bytes</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -305,7 +305,7 @@
 <dd><p>The size of the search tree</p>
 <dl class="field-list simple">
 <dt class="field-odd">Type</dt>
-<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></p>
+<dd class="field-odd"><p><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></p>
 </dd>
 </dl>
 </dd></dl>
@@ -314,19 +314,19 @@
 
 <dl class="py class">
 <dt id="maxminddb.reader.Reader">
-<em class="property">class </em><code class="sig-prename 
descclassname">maxminddb.reader.</code><code class="sig-name 
descname">Reader</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="n">database</span><span class="p">:</span> <span 
class="n">Union<span class="p">[</span>AnyStr<span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/os.html#os.PathLike"; title="(in Python 
v3.8)">os.PathLike</a><span class="p">, </span>IO<span 
class="p">]</span></span></em>, <em class="sig-param"><span 
class="n">mode</span><span class="p">:</span> <span class="n"><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a></span> <span class="o">=</span> <span 
class="default_value">0</span></em><span class="sig-paren">)</span><a 
class="headerlink" href="#maxminddb.reader.Reader" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>Bases: <a class="reference external" 
href="https://docs.python.org/3/library/functions.html#object"; title="(in 
Python v3.8)"><code class="xref py py-class docutils literal notranslate"><span 
class="pre">object</span></code></a></p>
+<em class="property">class </em><code class="sig-prename 
descclassname">maxminddb.reader.</code><code class="sig-name 
descname">Reader</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="n">database</span><span class="p">:</span> <span 
class="n">Union<span class="p">[</span>AnyStr<span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/os.html#os.PathLike"; title="(in Python 
v3.9)">os.PathLike</a><span class="p">, </span>IO<span 
class="p">]</span></span></em>, <em class="sig-param"><span 
class="n">mode</span><span class="p">:</span> <span class="n"><a 
class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a></span> <span class="o">=</span> <span 
class="default_value">0</span></em><span class="sig-paren">)</span><a 
class="headerlink" href="#maxminddb.reader.Reader" title="Permalink to this 
definition">¶</a></dt>
+<dd><p>Bases: <a class="reference external" 
href="https://docs.python.org/3/library/functions.html#object"; title="(in 
Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span 
class="pre">object</span></code></a></p>
 <p>Instances of this class provide a reader for the MaxMind DB format. IP
 addresses can be looked up using the <code class="docutils literal 
notranslate"><span class="pre">get</span></code> method.</p>
 <dl class="py method">
 <dt id="maxminddb.reader.Reader.close">
-<code class="sig-name descname">close</code><span 
class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; <a 
class="reference external" 
href="https://docs.python.org/3/library/constants.html#None"; title="(in Python 
v3.8)">None</a><a class="headerlink" href="#maxminddb.reader.Reader.close" 
title="Permalink to this definition">¶</a></dt>
+<code class="sig-name descname">close</code><span 
class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; <a 
class="reference external" 
href="https://docs.python.org/3/library/constants.html#None"; title="(in Python 
v3.9)">None</a><a class="headerlink" href="#maxminddb.reader.Reader.close" 
title="Permalink to this definition">¶</a></dt>
 <dd><p>Closes the MaxMind DB file and returns the resources to the system</p>
 </dd></dl>
 
 <dl class="py method">
 <dt id="maxminddb.reader.Reader.get">
-<code class="sig-name descname">get</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="n">ip_address</span><span class="p">:</span> 
<span class="n">Union<span class="p">[</span><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.8)">str</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address"; 
title="(in Python v3.8)">ipaddress.IPv6Address</a><span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address"; 
title="(in Python v3.8)">ipaddress.IPv4Address</a><span 
class="p">]</span></span></em><span class="sig-paren">)</span> &#x2192; 
Optional<span class="p">[</span>Union<span class="p">[</span>AnyStr<span 
class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#bool"; title="(in Python 
v3.8)">bool</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#float"; title="(in Python 
v3.8)">float</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a><span class="p">, </span>RecordList<span class="p">, 
</span>RecordDict<span class="p">]</span><span class="p">]</span><a 
class="headerlink" href="#maxminddb.reader.Reader.get" title="Permalink to this 
definition">¶</a></dt>
+<code class="sig-name descname">get</code><span class="sig-paren">(</span><em 
class="sig-param"><span class="n">ip_address</span><span class="p">:</span> 
<span class="n">Union<span class="p">[</span><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.9)">str</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address"; 
title="(in Python v3.9)">ipaddress.IPv6Address</a><span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address"; 
title="(in Python v3.9)">ipaddress.IPv4Address</a><span 
class="p">]</span></span></em><span class="sig-paren">)</span> &#x2192; 
Optional<span class="p">[</span>Union<span class="p">[</span>AnyStr<span 
class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#bool"; title="(in Python 
v3.9)">bool</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#float"; title="(in Python 
v3.9)">float</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a><span class="p">, </span>RecordList<span class="p">, 
</span>RecordDict<span class="p">]</span><span class="p">]</span><a 
class="headerlink" href="#maxminddb.reader.Reader.get" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>Return the record for the ip_address in the MaxMind DB</p>
 <p>Arguments:
 ip_address – an IP address in the standard string notation</p>
@@ -334,7 +334,7 @@
 
 <dl class="py method">
 <dt id="maxminddb.reader.Reader.get_with_prefix_len">
-<code class="sig-name descname">get_with_prefix_len</code><span 
class="sig-paren">(</span><em class="sig-param"><span 
class="n">ip_address</span><span class="p">:</span> <span class="n">Union<span 
class="p">[</span><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.8)">str</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address"; 
title="(in Python v3.8)">ipaddress.IPv6Address</a><span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address"; 
title="(in Python v3.8)">ipaddress.IPv4Address</a><span 
class="p">]</span></span></em><span class="sig-paren">)</span> &#x2192; 
Tuple<span class="p">[</span>Optional<span class="p">[</span>Union<span 
class="p">[</span>AnyStr<span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#bool"; title="(in Python 
v3.8)">bool</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#float"; title="(in Python 
v3.8)">float</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a><span class="p">, </span>RecordList<span class="p">, 
</span>RecordDict<span class="p">]</span><span class="p">]</span><span 
class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.8)">int</a><span class="p">]</span><a class="headerlink" 
href="#maxminddb.reader.Reader.get_with_prefix_len" title="Permalink to this 
definition">¶</a></dt>
+<code class="sig-name descname">get_with_prefix_len</code><span 
class="sig-paren">(</span><em class="sig-param"><span 
class="n">ip_address</span><span class="p">:</span> <span class="n">Union<span 
class="p">[</span><a class="reference external" 
href="https://docs.python.org/3/library/stdtypes.html#str"; title="(in Python 
v3.9)">str</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Address"; 
title="(in Python v3.9)">ipaddress.IPv6Address</a><span class="p">, </span><a 
class="reference external" 
href="https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address"; 
title="(in Python v3.9)">ipaddress.IPv4Address</a><span 
class="p">]</span></span></em><span class="sig-paren">)</span> &#x2192; 
Tuple<span class="p">[</span>Optional<span class="p">[</span>Union<span 
class="p">[</span>AnyStr<span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#bool"; title="(in Python 
v3.9)">bool</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#float"; title="(in Python 
v3.9)">float</a><span class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a><span class="p">, </span>RecordList<span class="p">, 
</span>RecordDict<span class="p">]</span><span class="p">]</span><span 
class="p">, </span><a class="reference external" 
href="https://docs.python.org/3/library/functions.html#int"; title="(in Python 
v3.9)">int</a><span class="p">]</span><a class="headerlink" 
href="#maxminddb.reader.Reader.get_with_prefix_len" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>Return a tuple with the record and the associated prefix length</p>
 <p>Arguments:
 ip_address – an IP address in the standard string notation</p>
@@ -427,13 +427,13 @@
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="#">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="#">maxminddb 2.0.3 
documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">MaxMind DB Python 
Module</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2013-2020, MaxMind, Inc..
-      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.1.2.
+      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.2.1.
     </div>
   </body>
 </html>
\ No newline at end of file
Binary files old/maxminddb-2.0.2/docs/html/objects.inv and 
new/maxminddb-2.0.3/docs/html/objects.inv differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/py-modindex.html 
new/maxminddb-2.0.3/docs/html/py-modindex.html
--- old/maxminddb-2.0.2/docs/html/py-modindex.html      2020-07-28 
19:38:03.000000000 +0200
+++ new/maxminddb-2.0.3/docs/html/py-modindex.html      2020-10-16 
23:29:09.000000000 +0200
@@ -4,8 +4,8 @@
 <html>
   <head>
     <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Python Module Index &#8212; maxminddb 2.0.2 documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Python Module Index &#8212; maxminddb 2.0.3 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script id="documentation_options" data-url_root="./" 
src="_static/documentation_options.js"></script>
@@ -28,7 +28,7 @@
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.3 
documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Python Module 
Index</a></li> 
       </ul>
     </div>  
@@ -97,13 +97,13 @@
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.3 
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 2013-2020, MaxMind, Inc..
-      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.1.2.
+      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.2.1.
     </div>
   </body>
 </html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/search.html 
new/maxminddb-2.0.3/docs/html/search.html
--- old/maxminddb-2.0.2/docs/html/search.html   2020-07-28 19:38:03.000000000 
+0200
+++ new/maxminddb-2.0.3/docs/html/search.html   2020-10-16 23:29:09.000000000 
+0200
@@ -4,8 +4,8 @@
 <html>
   <head>
     <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Search &#8212; maxminddb 2.0.2 documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Search &#8212; maxminddb 2.0.3 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     
@@ -30,7 +30,7 @@
         <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">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.3 
documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Search</a></li> 
       </ul>
     </div>  
@@ -81,13 +81,13 @@
         <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">maxminddb 2.0.2 
documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">maxminddb 2.0.3 
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 2013-2020, MaxMind, Inc..
-      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.1.2.
+      Created using <a href="https://www.sphinx-doc.org/";>Sphinx</a> 3.2.1.
     </div>
   </body>
 </html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/docs/html/searchindex.js 
new/maxminddb-2.0.3/docs/html/searchindex.js
--- old/maxminddb-2.0.2/docs/html/searchindex.js        2020-07-28 
19:38:03.000000000 +0200
+++ new/maxminddb-2.0.3/docs/html/searchindex.js        2020-10-16 
23:29:09.000000000 +0200
@@ -1 +1 @@
-Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["index.rst"],objects:{"":{maxminddb:[0,0,0,"-"]},"maxminddb.errors":{InvalidDatabaseError:[0,2,1,""]},"maxminddb.reader":{Metadata:[0,3,1,""],Reader:[0,3,1,""]},"maxminddb.reader.Metadata":{binary_format_major_version:[0,4,1,""],binary_format_minor_version:[0,4,1,""],build_epoch:[0,4,1,""],database_type:[0,4,1,""],description:[0,4,1,""],ip_version:[0,4,1,""],languages:[0,4,1,""],node_byte_size:[0,5,1,""],node_count:[0,4,1,""],record_size:[0,4,1,""],search_tree_size:[0,5,1,""]},"maxminddb.reader.Reader":{close:[0,5,1,""],get:[0,5,1,""],get_with_prefix_len:[0,5,1,""],metadata:[0,5,1,""]},maxminddb:{Reader:[0,1,1,""],errors:[0,0,0,"-"],open_database:[0,1,1,""],reader:[0,0,0,"-"]}},objnames:{"0":["py","module","Python
 module"],"1":["py","function","Python function"],"2":["py","exception","Python 
exception"],"3":["py","class","Python class"],"4":["py","attribute","Python 
attribute"],"5":["py","method","Python 
method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:exception","3":"py:class","4":"py:attribute","5":"py:method"},terms:{"byte":0,"case":0,"class":0,"default":0,"export":0,"float":0,"function":0,"import":0,"int":0,"return":0,"try":0,The:0,These:0,Use:0,abl:0,address:0,after:0,all:0,also:0,anystr:0,apach:0,api:0,argument:0,assist:0,associ:0,avail:0,back:0,backward:0,base:0,befor:0,binari:0,binary_format_major_vers:0,binary_format_minor_vers:0,bit:0,bool:0,both:0,build:0,build_epoch:0,call:0,caller:0,can:0,citi:0,close:0,code:0,compat:0,contact:0,contain:0,copyright:0,correspond:0,corrupt:0,countri:0,cpython:0,creat:0,custom:0,data:0,databas:0,database_typ:0,databs:0,decompress:0,descriptor:0,dict:0,dictionari:0,directori:0,doe:0,download:0,easy_instal:0,epoch:0,exist:0,extens:0,fall:0,file:0,first:0,follow:0,format:0,found:0,free:0,from:0,geoip2:0,geolite2:0,get:0,get_with_prefix_len:0,github:0,gunzip:0,have:0,identifi:0,immedi:0,implement:0,impli:0,inc:0,includ:0,index:0,instanc:0,instead:0,invalid:0,invaliddatabaseerror:0,ip_address:0,ip_vers:0,ipaddress:0,ipv4:0,ipv4address:0,ipv6:0,ipv6address:0,issu:0,kwarg:0,languag:0,length:0,libmaxminddb:0,librari:0,licens:0,list:0,load:0,local:0,look:0,lookup:0,mai:0,major:0,map:0,mean:0,memori:0,metadata:0,method:0,minor:0,mmdb:0,mode:0,mode_auto:0,mode_fd:0,mode_fil:0,mode_memori:0,mode_mmap:0,mode_mmap_ext:0,must:0,network:0,node:0,node_byte_s:0,node_count:0,none:0,notat:0,note:0,number:0,object:0,obtain:0,older:0,onli:0,open:0,open_databas:0,option:0,order:0,otherwis:0,page:0,param:0,pass:0,path:0,pathlik:0,pip:0,pleas:0,prefix:0,properli:0,properti:0,provid:0,pure:0,read:0,record:0,record_s:0,recorddict:0,recordlist:0,relat:0,report:0,resourc:0,respons:0,retriev:0,runtimeerror:0,search:0,search_tree_s:0,second:0,semant:0,servic:0,size:0,sourc:0,specif:0,standard:0,store:0,str:0,string:0,subnet:0,sure:0,system:0,text:0,thi:0,thrown:0,time:0,tracker:0,tree:0,tri:0,tupl:0,type:0,unexpect:0,union:0,unix:0,use:0,used:0,uses:0,using:0,valid:0,valu:0,valueerror:0,via:0,want:0,when:0,wish:0,you:0},titles:["MaxMind
 DB Python 
Module"],titleterms:{descript:0,error:0,exampl:0,except:0,indic:0,instal:0,maxmind:0,maxminddb:0,modul:0,python:0,reader:0,requir:0,support:0,tabl:0,usag:0,version:0}})
\ No newline at end of file
+Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["index.rst"],objects:{"":{maxminddb:[0,0,0,"-"]},"maxminddb.errors":{InvalidDatabaseError:[0,2,1,""]},"maxminddb.reader":{Metadata:[0,3,1,""],Reader:[0,3,1,""]},"maxminddb.reader.Metadata":{binary_format_major_version:[0,4,1,""],binary_format_minor_version:[0,4,1,""],build_epoch:[0,4,1,""],database_type:[0,4,1,""],description:[0,4,1,""],ip_version:[0,4,1,""],languages:[0,4,1,""],node_byte_size:[0,5,1,""],node_count:[0,4,1,""],record_size:[0,4,1,""],search_tree_size:[0,5,1,""]},"maxminddb.reader.Reader":{close:[0,5,1,""],get:[0,5,1,""],get_with_prefix_len:[0,5,1,""],metadata:[0,5,1,""]},maxminddb:{Reader:[0,1,1,""],errors:[0,0,0,"-"],open_database:[0,1,1,""],reader:[0,0,0,"-"]}},objnames:{"0":["py","module","Python
 module"],"1":["py","function","Python function"],"2":["py","exception","Python 
exception"],"3":["py","class","Python class"],"4":["py","attribute","Python 
attribute"],"5":["py","method","Python 
method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:exception","3":"py:class","4":"py:attribute","5":"py:method"},terms:{"110":0,"152":0,"2013":0,"2020":0,"216":0,"byte":0,"case":0,"class":0,"default":0,"export":0,"float":0,"function":0,"import":0,"int":0,"return":0,"try":0,The:0,These:0,Use:0,abl:0,address:0,after:0,all:0,also:0,anystr:0,apach:0,api:0,argument:0,assist:0,associ:0,avail:0,back:0,backward:0,base:0,befor:0,binari:0,binary_format_major_vers:0,binary_format_minor_vers:0,bit:0,bool:0,both:0,build:0,build_epoch:0,call:0,caller:0,can:0,citi:0,close:0,code:0,compat:0,contact:0,contain:0,copyright:0,correspond:0,corrupt:0,countri:0,cpython:0,creat:0,custom:0,data:0,databas:0,database_typ:0,databs:0,decompress:0,descriptor:0,dict:0,dictionari:0,directori:0,doe:0,download:0,easy_instal:0,epoch:0,exist:0,extens:0,fall:0,file:0,first:0,follow:0,format:0,found:0,free:0,from:0,geoip2:0,geolite2:0,get:0,get_with_prefix_len:0,github:0,gunzip:0,have:0,identifi:0,immedi:0,implement:0,impli:0,inc:0,includ:0,index:0,instanc:0,instead:0,invalid:0,invaliddatabaseerror:0,ip_address:0,ip_vers:0,ipaddress:0,ipv4:0,ipv4address:0,ipv6:0,ipv6address:0,issu:0,kwarg:0,languag:0,length:0,libmaxminddb:0,librari:0,licens:0,list:0,load:0,local:0,look:0,lookup:0,mai:0,major:0,map:0,mean:0,memori:0,metadata:0,method:0,minor:0,mmdb:0,mode:0,mode_auto:0,mode_fd:0,mode_fil:0,mode_memori:0,mode_mmap:0,mode_mmap_ext:0,must:0,network:0,node:0,node_byte_s:0,node_count:0,none:0,notat:0,note:0,number:0,object:0,obtain:0,older:0,onli:0,open:0,open_databas:0,option:0,order:0,otherwis:0,page:0,param:0,pass:0,path:0,pathlik:0,pip:0,pleas:0,prefix:0,properli:0,properti:0,provid:0,pure:0,read:0,record:0,record_s:0,recorddict:0,recordlist:0,relat:0,report:0,resourc:0,respons:0,retriev:0,runtimeerror:0,search:0,search_tree_s:0,second:0,semant:0,servic:0,size:0,sourc:0,specif:0,standard:0,store:0,str:0,string:0,subnet:0,sure:0,system:0,text:0,thi:0,thrown:0,time:0,tracker:0,tree:0,tri:0,tupl:0,type:0,unexpect:0,union:0,unix:0,use:0,used:0,uses:0,using:0,valid:0,valu:0,valueerror:0,via:0,want:0,when:0,wish:0,you:0},titles:["MaxMind
 DB Python 
Module"],titleterms:{descript:0,error:0,exampl:0,except:0,indic:0,instal:0,maxmind:0,maxminddb:0,modul:0,python:0,reader:0,requir:0,support:0,tabl:0,usag:0,version:0}})
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/maxminddb/__init__.py 
new/maxminddb-2.0.3/maxminddb/__init__.py
--- old/maxminddb-2.0.2/maxminddb/__init__.py   2020-07-28 19:37:51.000000000 
+0200
+++ new/maxminddb-2.0.3/maxminddb/__init__.py   2020-10-16 23:28:54.000000000 
+0200
@@ -48,7 +48,7 @@
         return maxminddb.extension.Reader(database)
     if mode in (MODE_AUTO, MODE_MMAP, MODE_FILE, MODE_MEMORY, MODE_FD):
         return PyReader(database, mode)
-    raise ValueError("Unsupported open mode: {0}".format(mode))
+    raise ValueError(f"Unsupported open mode: {mode}")
 
 
 def Reader(database):  # pylint: disable=invalid-name
@@ -57,7 +57,7 @@
 
 
 __title__ = "maxminddb"
-__version__ = "2.0.2"
+__version__ = "2.0.3"
 __author__ = "Gregory Oschwald"
 __license__ = "Apache License, Version 2.0"
 __copyright__ = "Copyright 2013-2020 MaxMind, Inc."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/maxminddb/decoder.py 
new/maxminddb-2.0.3/maxminddb/decoder.py
--- old/maxminddb-2.0.2/maxminddb/decoder.py    2020-07-10 22:06:17.000000000 
+0200
+++ new/maxminddb-2.0.3/maxminddb/decoder.py    2020-10-16 23:27:19.000000000 
+0200
@@ -6,10 +6,16 @@
 
 """
 import struct
-
-from mmap import mmap
 from typing import cast, Dict, List, Tuple, Union
 
+try:
+    # pylint: disable=unused-import
+    import mmap
+except ImportError:
+    # pylint: disable=invalid-name
+    mmap = None  # type: ignore
+
+
 from maxminddb.errors import InvalidDatabaseError
 from maxminddb.file import FileBuffer
 from maxminddb.types import Record
@@ -20,7 +26,7 @@
 
     def __init__(
         self,
-        database_buffer: Union[FileBuffer, mmap, bytes],
+        database_buffer: Union[FileBuffer, "mmap.mmap", bytes],
         pointer_base: int = 0,
         pointer_test: bool = False,
     ) -> None:
@@ -147,10 +153,10 @@
 
         try:
             decoder = self._type_decoder[type_num]
-        except KeyError:
+        except KeyError as ex:
             raise InvalidDatabaseError(
-                "Unexpected type number ({type}) " 
"encountered".format(type=type_num)
-            )
+                f"Unexpected type number ({type_num}) encountered"
+            ) from ex
 
         (size, new_offset) = self._size_from_ctrl_byte(ctrl_byte, new_offset, 
type_num)
         return decoder(self, size, new_offset)
@@ -161,8 +167,7 @@
         if type_num < 7:
             raise InvalidDatabaseError(
                 "Something went horribly wrong in the decoder. An "
-                "extended type resolved to a type number < 8 "
-                "({type})".format(type=type_num)
+                f"extended type resolved to a type number < 8 ({type_num})"
             )
         return type_num, offset + 1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/maxminddb/reader.py 
new/maxminddb-2.0.3/maxminddb/reader.py
--- old/maxminddb-2.0.2/maxminddb/reader.py     2020-07-21 18:42:29.000000000 
+0200
+++ new/maxminddb-2.0.3/maxminddb/reader.py     2020-10-16 20:35:48.000000000 
+0200
@@ -73,9 +73,9 @@
             filename = database.name  # type: ignore
         else:
             raise ValueError(
-                "Unsupported open mode ({0}). Only MODE_AUTO, MODE_FILE, "
+                f"Unsupported open mode ({mode}). Only MODE_AUTO, MODE_FILE, "
                 "MODE_MEMORY and MODE_FD are supported by the pure Python "
-                "Reader".format(mode)
+                "Reader"
             )
 
         metadata_start = self._buffer.rfind(
@@ -85,9 +85,8 @@
         if metadata_start == -1:
             self.close()
             raise InvalidDatabaseError(
-                "Error opening database file ({0}). "
+                f"Error opening database file ({filename}). "
                 "Is this a valid MaxMind DB file?"
-                "".format(filename)
             )
 
         metadata_start += len(self._METADATA_START_MARKER)
@@ -96,7 +95,7 @@
 
         if not isinstance(metadata, dict):
             raise InvalidDatabaseError(
-                "Error reading metadata in database file 
({0}).".format(filename)
+                f"Error reading metadata in database file ({filename})."
             )
 
         self._metadata = Metadata(**metadata)  # pylint: 
disable=bad-option-value
@@ -137,13 +136,13 @@
 
         try:
             packed_address = bytearray(address.packed)
-        except AttributeError:
-            raise TypeError("argument 1 must be a string or ipaddress object")
+        except AttributeError as ex:
+            raise TypeError("argument 1 must be a string or ipaddress object") 
from ex
 
         if address.version == 6 and self._metadata.ip_version == 4:
             raise ValueError(
-                "Error looking up {0}. You attempted to look up "
-                "an IPv6 address in an IPv4-only database.".format(ip_address)
+                f"Error looking up {ip_address}. You attempted to look up "
+                "an IPv6 address in an IPv4-only database."
             )
 
         (pointer, prefix_len) = self._find_address_in_tree(packed_address)
@@ -207,7 +206,7 @@
             offset = base_offset + index * 4
             node_bytes = self._buffer[offset : offset + 4]
         else:
-            raise InvalidDatabaseError("Unknown record size: 
{0}".format(record_size))
+            raise InvalidDatabaseError(f"Unknown record size: {record_size}")
         return struct.unpack(b"!I", node_bytes)[0]
 
     def _resolve_data_pointer(self, pointer: int) -> Record:
@@ -333,6 +332,4 @@
 
     def __repr__(self):
         args = ", ".join("%s=%r" % x for x in self.__dict__.items())
-        return "{module}.{class_name}({data})".format(
-            module=self.__module__, class_name=self.__class__.__name__, 
data=args
-        )
+        return f"{self.__module__}.{self.__class__.__name__}({args})"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/maxminddb.egg-info/PKG-INFO 
new/maxminddb-2.0.3/maxminddb.egg-info/PKG-INFO
--- old/maxminddb-2.0.2/maxminddb.egg-info/PKG-INFO     2020-07-28 
19:38:03.000000000 +0200
+++ new/maxminddb-2.0.3/maxminddb.egg-info/PKG-INFO     2020-10-16 
23:29:09.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: maxminddb
-Version: 2.0.2
+Version: 2.0.3
 Summary: Reader for the MaxMind DB format
 Home-page: http://www.maxmind.com/
 Author: Gregory Oschwald
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/setup.cfg 
new/maxminddb-2.0.3/setup.cfg
--- old/maxminddb-2.0.2/setup.cfg       2020-07-28 19:38:03.624959200 +0200
+++ new/maxminddb-2.0.3/setup.cfg       2020-10-16 23:29:09.699857500 +0200
@@ -1,6 +1,28 @@
 [aliases]
 build_html = build_sphinx -b html --build-dir docs
-sdist = build_html sdist
+
+[flake8]
+max-line-length = 88
+
+[wheel]
+universal = 1
+
+[tox:tox]
+envlist = py36, py37, py38, mypy
+
+[gh-actions]
+python = 
+       3.6: py36
+       3.7: py37
+       3.8: py38
+       3.9: py39, mypy
+
+[testenv]
+deps = 
+       pytest
+       mocket
+commands = pytest tests
+passenv = *
 
 [egg_info]
 tag_build = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/tests/decoder_test.py 
new/maxminddb-2.0.3/tests/decoder_test.py
--- old/maxminddb-2.0.2/tests/decoder_test.py   2020-07-10 22:06:17.000000000 
+0200
+++ new/maxminddb-2.0.3/tests/decoder_test.py   2020-09-10 00:32:06.000000000 
+0200
@@ -197,7 +197,10 @@
         db.write(input)
 
         decoder = Decoder(db, pointer_test=True)
-        (actual, _,) = decoder.decode(0)
+        (
+            actual,
+            _,
+        ) = decoder.decode(0)
 
         if type in ("float", "double"):
             self.assertAlmostEqual(expected, actual, places=3, msg=type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/maxminddb-2.0.2/tests/reader_test.py 
new/maxminddb-2.0.3/tests/reader_test.py
--- old/maxminddb-2.0.2/tests/reader_test.py    2020-07-21 19:34:07.000000000 
+0200
+++ new/maxminddb-2.0.3/tests/reader_test.py    2020-10-06 18:44:13.000000000 
+0200
@@ -78,7 +78,12 @@
             "double": 42.123456,
             "float": 1.100000023841858,
             "int32": -268435456,
-            "map": {"mapX": {"arrayX": [7, 8, 9], "utf8_stringX": "hello",},},
+            "map": {
+                "mapX": {
+                    "arrayX": [7, 8, 9],
+                    "utf8_stringX": "hello",
+                },
+            },
             "uint128": 1329227995784915872903807060280344576,
             "uint16": 0x64,
             "uint32": 0x10000000,
@@ -170,12 +175,8 @@
                 self.assertEqual(
                     prefix_len,
                     test["expected_prefix_len"],
-                    "expected prefix_len of {} for {} in {} but got {}".format(
-                        test["expected_prefix_len"],
-                        test["ip"],
-                        test["file_name"],
-                        prefix_len,
-                    ),
+                    f"expected prefix_len of {test['expected_prefix_len']} for 
{test['ip']}"
+                    + f" in {test['file_name']} but got {prefix_len}",
                 )
                 self.assertEqual(
                     record,
@@ -196,7 +197,10 @@
         self.assertAlmostEqual(record["float"], 1.1)
         self.assertEqual(record["int32"], -268435456)
         self.assertEqual(
-            {"mapX": {"arrayX": [7, 8, 9], "utf8_stringX": "hello"},}, 
record["map"]
+            {
+                "mapX": {"arrayX": [7, 8, 9], "utf8_stringX": "hello"},
+            },
+            record["map"],
         )
 
         self.assertEqual(record["uint16"], 100)
@@ -434,7 +438,7 @@
         def lookup(pipe):
             try:
                 for i in range(32):
-                    reader.get(self.ipf("65.115.240.{i}".format(i=i)))
+                    reader.get(self.ipf(f"65.115.240.{i}"))
                 pipe.send(1)
             except:
                 pipe.send(0)
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to