Hello community,

here is the log from the commit of package python-geoip2 for openSUSE:Factory 
checked in at 2017-11-04 19:30:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-geoip2 (Old)
 and      /work/SRC/openSUSE:Factory/.python-geoip2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-geoip2"

Sat Nov  4 19:30:28 2017 rev:2 rq:538853 version:2.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-geoip2/python-geoip2.changes      
2017-07-04 09:09:18.739737999 +0200
+++ /work/SRC/openSUSE:Factory/.python-geoip2.new/python-geoip2.changes 
2017-11-04 19:30:42.198020889 +0100
@@ -1,0 +2,9 @@
+Fri Oct 27 21:10:06 UTC 2017 - [email protected]
+
+- update to version 2.6.0:
+ * The following new anonymizer attributes were added to 
``geoip2.record.Traits``
+   for use with GeoIP2 Precision Insights: ``is_anonymous``,
+   ``is_anonymous_vpn``, ``is_hosting_provider``, ``is_public_proxy``, and
+   ``is_tor_exit_node``.
+
+-------------------------------------------------------------------

Old:
----
  geoip2-2.5.0.tar.gz

New:
----
  geoip2-2.6.0.tar.gz

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

Other differences:
------------------
++++++ python-geoip2.spec ++++++
--- /var/tmp/diff_new_pack.2bDkY7/_old  2017-11-04 19:30:43.265981868 +0100
+++ /var/tmp/diff_new_pack.2bDkY7/_new  2017-11-04 19:30:43.269981721 +0100
@@ -13,39 +13,38 @@
 # published by the Open Source Initiative.
 
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
 
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %bcond_without test
 Name:           python-geoip2
-Version:        2.5.0
+Version:        2.6.0
 Release:        0
-License:        Apache-2.0
 Summary:        MaxMind GeoIP2 Python API
-Url:            http://www.maxmind.com/
+License:        Apache-2.0
 Group:          Development/Languages/Python
+Url:            http://www.maxmind.com/
 Source:         
https://files.pythonhosted.org/packages/source/g/geoip2/geoip2-%{version}.tar.gz
-BuildRequires:  python-rpm-macros
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  python-rpm-macros
+Requires:       %{python_module maxminddb >= 1.2.1}
+Requires:       %{python_module requests >= 2.9}
+BuildArch:      noarch
 %if %{with test}
 BuildRequires:  %{python_module maxminddb >= 1.2.1}
 BuildRequires:  %{python_module requests >= 2.9}
 %endif
 # SECTION test requirements
+BuildRequires:  fdupes
 %if %{with test}
 BuildRequires:  %{python_module requests-mock >= 0.5}
 %endif
-BuildRequires:  fdupes
 # /SECTION
-Requires:       %{python_module maxminddb >= 1.2.1}
-Requires:       %{python_module requests >= 2.9}
 %ifpython2
 Recommends:     python2-ipaddress
 %endif
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildArch:      noarch
-
 %python_subpackages
 
 %description
@@ -60,7 +59,7 @@
 
 %install
 %python_install
-%python_expand %fdupes %buildroot%{$sitearch}
+%python_expand %fdupes %{buildroot}%{$sitearch}
 
 %if %{with test}
 %check
@@ -68,7 +67,6 @@
 %endif
 
 %files %{python_files}
-%defattr(-,root,root,-)
 %doc LICENSE README.rst
 %{python_sitelib}/*
 

++++++ geoip2-2.5.0.tar.gz -> geoip2-2.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/HISTORY.rst new/geoip2-2.6.0/HISTORY.rst
--- old/geoip2-2.5.0/HISTORY.rst        2017-05-08 21:10:19.000000000 +0200
+++ new/geoip2-2.6.0/HISTORY.rst        2017-10-27 21:59:29.000000000 +0200
@@ -3,6 +3,14 @@
 History
 -------
 
+2.6.0 (2017-10-27)
+++++++++++++++++++
+
+* The following new anonymizer attributes were added to 
``geoip2.record.Traits``
+  for use with GeoIP2 Precision Insights: ``is_anonymous``,
+  ``is_anonymous_vpn``, ``is_hosting_provider``, ``is_public_proxy``, and
+  ``is_tor_exit_node``.
+
 2.5.0 (2017-05-08)
 ++++++++++++++++++
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/PKG-INFO new/geoip2-2.6.0/PKG-INFO
--- old/geoip2-2.5.0/PKG-INFO   2017-05-08 21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/PKG-INFO   2017-10-27 22:02:24.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: geoip2
-Version: 2.5.0
+Version: 2.6.0
 Summary: MaxMind GeoIP2 API
 Home-page: http://www.maxmind.com/
 Author: Gregory Oschwald
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/.buildinfo 
new/geoip2-2.6.0/docs/html/.buildinfo
--- old/geoip2-2.5.0/docs/html/.buildinfo       2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/docs/html/.buildinfo       2017-10-27 22:02:24.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: 155e1f7354b300e1684c536d1faddb38
+config: 4ee800aa8302617bee22f62f3120f3fa
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/_static/basic.css 
new/geoip2-2.6.0/docs/html/_static/basic.css
--- old/geoip2-2.5.0/docs/html/_static/basic.css        2017-05-08 
21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/docs/html/_static/basic.css        2017-10-27 
22:02:24.000000000 +0200
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -398,6 +398,13 @@
     margin: 0;
 }
 
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
 /* -- other body styles ----------------------------------------------------- 
*/
 
 ol.arabic {
@@ -438,10 +445,14 @@
     margin-left: 30px;
 }
 
-dt:target, .highlighted {
+dt:target, span.highlighted {
     background-color: #fbe54e;
 }
 
+rect.highlighted {
+    fill: #fbe54e;
+}
+
 dl.glossary dt {
     font-weight: bold;
     font-size: 1.1em;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/_static/doctools.js 
new/geoip2-2.6.0/docs/html/_static/doctools.js
--- old/geoip2-2.5.0/docs/html/_static/doctools.js      2017-05-08 
21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/docs/html/_static/doctools.js      2017-10-27 
22:02:24.000000000 +0200
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -45,7 +45,7 @@
  * it will always return arrays of strings for the value parts.
  */
 jQuery.getQueryParameters = function(s) {
-  if (typeof s == 'undefined')
+  if (typeof s === 'undefined')
     s = document.location.search;
   var parts = s.substr(s.indexOf('?') + 1).split('&');
   var result = {};
@@ -66,29 +66,53 @@
  * span elements with the given class name.
  */
 jQuery.fn.highlightText = function(text, className) {
-  function highlight(node) {
-    if (node.nodeType == 3) {
+  function highlight(node, addItems) {
+    if (node.nodeType === 3) {
       var val = node.nodeValue;
       var pos = val.toLowerCase().indexOf(text);
       if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
-        var span = document.createElement("span");
-        span.className = className;
+        var span;
+        var isInSVG = jQuery(node).closest("body, svg, 
foreignObject").is("svg");
+        if (isInSVG) {
+          span = document.createElementNS("http://www.w3.org/2000/svg";, 
"tspan");
+        } else {
+          span = document.createElement("span");
+          span.className = className;
+        }
         span.appendChild(document.createTextNode(val.substr(pos, 
text.length)));
         node.parentNode.insertBefore(span, node.parentNode.insertBefore(
           document.createTextNode(val.substr(pos + text.length)),
           node.nextSibling));
         node.nodeValue = val.substr(0, pos);
+        if (isInSVG) {
+          var bbox = span.getBBox();
+          var rect = document.createElementNS("http://www.w3.org/2000/svg";, 
"rect");
+                 rect.x.baseVal.value = bbox.x;
+          rect.y.baseVal.value = bbox.y;
+          rect.width.baseVal.value = bbox.width;
+          rect.height.baseVal.value = bbox.height;
+          rect.setAttribute('class', className);
+          var parentOfText = node.parentNode.parentNode;
+          addItems.push({
+              "parent": node.parentNode,
+              "target": rect});
+        }
       }
     }
     else if (!jQuery(node).is("button, select, textarea")) {
       jQuery.each(node.childNodes, function() {
-        highlight(this);
+        highlight(this, addItems);
       });
     }
   }
-  return this.each(function() {
-    highlight(this);
+  var addItems = [];
+  var result = this.each(function() {
+    highlight(this, addItems);
   });
+  for (var i = 0; i < addItems.length; ++i) {
+    jQuery(addItems[i].parent).before(addItems[i].target);
+  }
+  return result;
 };
 
 /*
@@ -131,21 +155,21 @@
    * i18n support
    */
   TRANSLATIONS : {},
-  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
   LOCALE : 'unknown',
 
   // gettext and ngettext don't access this so that the functions
   // can safely bound to a different name (_ = Documentation.gettext)
   gettext : function(string) {
     var translated = Documentation.TRANSLATIONS[string];
-    if (typeof translated == 'undefined')
+    if (typeof translated === 'undefined')
       return string;
-    return (typeof translated == 'string') ? translated : translated[0];
+    return (typeof translated === 'string') ? translated : translated[0];
   },
 
   ngettext : function(singular, plural, n) {
     var translated = Documentation.TRANSLATIONS[singular];
-    if (typeof translated == 'undefined')
+    if (typeof translated === 'undefined')
       return (n == 1) ? singular : plural;
     return translated[Documentation.PLURALEXPR(n)];
   },
@@ -216,7 +240,7 @@
       var src = $(this).attr('src');
       var idnum = $(this).attr('id').substr(7);
       $('tr.cg-' + idnum).toggle();
-      if (src.substr(-9) == 'minus.png')
+      if (src.substr(-9) === 'minus.png')
         $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
       else
         $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
@@ -248,7 +272,7 @@
     var path = document.location.pathname;
     var parts = path.split(/\//);
     $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
-      if (this == '..')
+      if (this === '..')
         parts.pop();
     });
     var url = parts.join('/');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/_static/pygments.css 
new/geoip2-2.6.0/docs/html/_static/pygments.css
--- old/geoip2-2.5.0/docs/html/_static/pygments.css     2017-05-08 
21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/docs/html/_static/pygments.css     2017-10-27 
22:02:24.000000000 +0200
@@ -47,8 +47,10 @@
 .highlight .mh { color: #208050 } /* Literal.Number.Hex */
 .highlight .mi { color: #208050 } /* Literal.Number.Integer */
 .highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
 .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
 .highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
 .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
 .highlight .s2 { color: #4070a0 } /* Literal.String.Double */
 .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape 
*/
@@ -59,7 +61,9 @@
 .highlight .s1 { color: #4070a0 } /* Literal.String.Single */
 .highlight .ss { color: #517918 } /* Literal.String.Symbol */
 .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
 .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
 .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
 .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
 .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/_static/searchtools.js 
new/geoip2-2.6.0/docs/html/_static/searchtools.js
--- old/geoip2-2.5.0/docs/html/_static/searchtools.js   2017-05-08 
21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/docs/html/_static/searchtools.js   2017-10-27 
22:02:24.000000000 +0200
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -540,6 +540,9 @@
           });
         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
           var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
+          if (suffix === undefined) {
+            suffix = '.txt';
+          }
           $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] 
+ (item[5].slice(-suffix.length) === suffix ? '' : suffix),
                   dataType: "text",
                   complete: function(jqxhr, textstatus) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/_static/sphinxdoc.css 
new/geoip2-2.6.0/docs/html/_static/sphinxdoc.css
--- old/geoip2-2.5.0/docs/html/_static/sphinxdoc.css    2017-05-08 
21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/docs/html/_static/sphinxdoc.css    2017-10-27 
22:02:24.000000000 +0200
@@ -5,7 +5,7 @@
  * Sphinx stylesheet -- sphinxdoc theme.  Originally created by
  * Armin Ronacher for Werkzeug.
  *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/_static/websupport.js 
new/geoip2-2.6.0/docs/html/_static/websupport.js
--- old/geoip2-2.5.0/docs/html/_static/websupport.js    2016-09-15 
23:02:26.000000000 +0200
+++ new/geoip2-2.6.0/docs/html/_static/websupport.js    2017-10-27 
22:01:04.000000000 +0200
@@ -4,7 +4,7 @@
  *
  * sphinx.websupport utilities for all documentation.
  *
- * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/genindex.html 
new/geoip2-2.6.0/docs/html/genindex.html
--- old/geoip2-2.5.0/docs/html/genindex.html    2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/docs/html/genindex.html    2017-10-27 22:02:24.000000000 
+0200
@@ -1,21 +1,18 @@
 
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
 
-
 <html xmlns="http://www.w3.org/1999/xhtml";>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Index &#8212; geoip2 2.5.0 documentation</title>
-    
+    <title>Index &#8212; geoip2 2.6.0 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '2.5.0',
+        VERSION:     '2.6.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true,
@@ -28,7 +25,7 @@
     <link rel="index" title="Index" href="#" />
     <link rel="search" title="Search" href="search.html" /> 
   </head>
-  <body role="document">
+  <body>
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -38,7 +35,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">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
       <div class="sphinxsidebar" role="navigation" aria-label="main 
navigation">
@@ -317,23 +314,43 @@
 </li>
       </ul></li>
       <li><a 
href="index.html#geoip2.models.AnonymousIP.is_anonymous">is_anonymous 
(geoip2.models.AnonymousIP attribute)</a>
+
+      <ul>
+        <li><a 
href="index.html#geoip2.records.Traits.is_anonymous">(geoip2.records.Traits 
attribute)</a>
 </li>
+      </ul></li>
       <li><a 
href="index.html#geoip2.records.Traits.is_anonymous_proxy">is_anonymous_proxy 
(geoip2.records.Traits attribute)</a>
 </li>
       <li><a 
href="index.html#geoip2.models.AnonymousIP.is_anonymous_vpn">is_anonymous_vpn 
(geoip2.models.AnonymousIP attribute)</a>
+
+      <ul>
+        <li><a 
href="index.html#geoip2.records.Traits.is_anonymous_vpn">(geoip2.records.Traits 
attribute)</a>
 </li>
+      </ul></li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a 
href="index.html#geoip2.models.AnonymousIP.is_hosting_provider">is_hosting_provider
 (geoip2.models.AnonymousIP attribute)</a>
+
+      <ul>
+        <li><a 
href="index.html#geoip2.records.Traits.is_hosting_provider">(geoip2.records.Traits
 attribute)</a>
 </li>
+      </ul></li>
       <li><a 
href="index.html#geoip2.records.Traits.is_legitimate_proxy">is_legitimate_proxy 
(geoip2.records.Traits attribute)</a>
 </li>
       <li><a 
href="index.html#geoip2.models.AnonymousIP.is_public_proxy">is_public_proxy 
(geoip2.models.AnonymousIP attribute)</a>
+
+      <ul>
+        <li><a 
href="index.html#geoip2.records.Traits.is_public_proxy">(geoip2.records.Traits 
attribute)</a>
 </li>
+      </ul></li>
       <li><a 
href="index.html#geoip2.records.Traits.is_satellite_provider">is_satellite_provider
 (geoip2.records.Traits attribute)</a>
 </li>
       <li><a 
href="index.html#geoip2.models.AnonymousIP.is_tor_exit_node">is_tor_exit_node 
(geoip2.models.AnonymousIP attribute)</a>
+
+      <ul>
+        <li><a 
href="index.html#geoip2.records.Traits.is_tor_exit_node">(geoip2.records.Traits 
attribute)</a>
 </li>
+      </ul></li>
       <li><a href="index.html#geoip2.records.Country.iso_code">iso_code 
(geoip2.records.Country attribute)</a>
 
       <ul>
@@ -581,12 +598,12 @@
         <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">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2013-2016, MaxMind, Inc..
-      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.5.1.
+      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.6.5.
     </div>
   </body>
 </html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/index.html 
new/geoip2-2.6.0/docs/html/index.html
--- old/geoip2-2.5.0/docs/html/index.html       2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/docs/html/index.html       2017-10-27 22:02:24.000000000 
+0200
@@ -1,20 +1,17 @@
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
 
-
 <html xmlns="http://www.w3.org/1999/xhtml";>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>MaxMind GeoIP2 Python API &#8212; geoip2 2.5.0 documentation</title>
-    
+    <title>MaxMind GeoIP2 Python API &#8212; geoip2 2.6.0 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '2.5.0',
+        VERSION:     '2.6.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true,
@@ -27,7 +24,7 @@
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" /> 
   </head>
-  <body role="document">
+  <body>
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -37,7 +34,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="#">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="#">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
       <div class="sphinxsidebar" role="navigation" aria-label="main 
navigation">
@@ -120,7 +117,7 @@
 <div class="section" id="description">
 <h2>Description<a class="headerlink" href="#description" title="Permalink to 
this headline">¶</a></h2>
 <p>This package provides an API for the GeoIP2 <a class="reference external" 
href="http://dev.maxmind.com/geoip/geoip2/web-services";>web services</a> and <a 
class="reference external" 
href="http://dev.maxmind.com/geoip/geoip2/downloadable";>databases</a>. The API 
also works with
-MaxMind&#8217;s free <a class="reference external" 
href="http://dev.maxmind.com/geoip/geoip2/geolite2/";>GeoLite2 databases</a>.</p>
+MaxMind’s free <a class="reference external" 
href="http://dev.maxmind.com/geoip/geoip2/geolite2/";>GeoLite2 databases</a>.</p>
 </div>
 <div class="section" id="installation">
 <h2>Installation<a class="headerlink" href="#installation" title="Permalink to 
this headline">¶</a></h2>
@@ -450,12 +447,12 @@
 <p>If the problem you find is that an IP address is incorrectly mapped, please
 <a class="reference external" 
href="http://www.maxmind.com/en/correction";>submit your correction to 
MaxMind</a>.</p>
 <p>If you find some other sort of mistake, like an incorrect spelling, please
-check the <a class="reference external" 
href="http://www.geonames.org/";>GeoNames site</a> first. Once you&#8217;ve
+check the <a class="reference external" 
href="http://www.geonames.org/";>GeoNames site</a> first. Once you’ve
 searched for a place and found it on the GeoNames map view, there are a
-number of links you can use to correct data (&#8220;move&#8221;, 
&#8220;edit&#8221;, &#8220;alternate
-names&#8221;, etc.). Once the correction is part of the GeoNames data set, it
+number of links you can use to correct data (“move”, “edit”, “alternate
+names”, etc.). Once the correction is part of the GeoNames data set, it
 will be automatically incorporated into future MaxMind releases.</p>
-<p>If you are a paying MaxMind customer and you&#8217;re not sure where to 
submit a
+<p>If you are a paying MaxMind customer and you’re not sure where to submit a
 correction, please <a class="reference external" 
href="http://www.maxmind.com/en/support";>contact MaxMind support</a> for 
help.</p>
 </div>
 <div class="section" id="requirements">
@@ -507,7 +504,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" 
href="#geoip2.models.AnonymousIP" title="geoip2.models.AnonymousIP"><code 
class="xref py py-class docutils literal"><span 
class="pre">geoip2.models.AnonymousIP</span></code></a> object</td>
 </tr>
@@ -523,7 +520,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" href="#geoip2.models.ASN" 
title="geoip2.models.ASN"><code class="xref py py-class docutils literal"><span 
class="pre">geoip2.models.ASN</span></code></a> object</td>
 </tr>
@@ -539,7 +536,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" href="#geoip2.models.City" 
title="geoip2.models.City"><code class="xref py py-class docutils 
literal"><span class="pre">geoip2.models.City</span></code></a> object</td>
 </tr>
@@ -561,7 +558,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" 
href="#geoip2.models.ConnectionType" title="geoip2.models.ConnectionType"><code 
class="xref py py-class docutils literal"><span 
class="pre">geoip2.models.ConnectionType</span></code></a> object</td>
 </tr>
@@ -577,7 +574,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" href="#geoip2.models.Country" 
title="geoip2.models.Country"><code class="xref py py-class docutils 
literal"><span class="pre">geoip2.models.Country</span></code></a> object</td>
 </tr>
@@ -593,7 +590,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" href="#geoip2.models.Domain" 
title="geoip2.models.Domain"><code class="xref py py-class docutils 
literal"><span class="pre">geoip2.models.Domain</span></code></a> object</td>
 </tr>
@@ -609,7 +606,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" 
href="#geoip2.models.Enterprise" title="geoip2.models.Enterprise"><code 
class="xref py py-class docutils literal"><span 
class="pre">geoip2.models.Enterprise</span></code></a> object</td>
 </tr>
@@ -625,7 +622,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string.</td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td 
class="field-body"><a class="reference internal" href="#geoip2.models.ISP" 
title="geoip2.models.ISP"><code class="xref py py-class docutils literal"><span 
class="pre">geoip2.models.ISP</span></code></a> object</td>
 </tr>
@@ -676,8 +673,8 @@
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><ul class="first last simple">
-<li><strong>user_id</strong> &#8211; Your MaxMind User ID.</li>
-<li><strong>license_key</strong> &#8211; Your MaxMind license key.</li>
+<li><strong>user_id</strong> – Your MaxMind User ID.</li>
+<li><strong>license_key</strong> – Your MaxMind license key.</li>
 </ul>
 </td>
 </tr>
@@ -691,30 +688,30 @@
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><ul class="first last simple">
-<li><strong>host</strong> &#8211; The hostname to make a request against. This 
defaults to
-&#8220;geoip.maxmind.com&#8221;. In most cases, you should not need to set this
+<li><strong>host</strong> – The hostname to make a request against. This 
defaults to
+“geoip.maxmind.com”. In most cases, you should not need to set this
 explicitly.</li>
-<li><strong>locales</strong> &#8211; <p>This is list of locale codes. This 
argument will be
+<li><strong>locales</strong> – <p>This is list of locale codes. This argument 
will be
 passed on to record classes to use when their name properties are
-called. The default value is [&#8216;en&#8217;].</p>
+called. The default value is [‘en’].</p>
 <p>The order of the locales is significant. When a record class has
 multiple names (country, city, etc.), its name property will return
 the name in the first locale that has one.</p>
 <p>Note that the only locale which is always present in the GeoIP2
-data is &#8220;en&#8221;. If you do not include this locale, the name property
+data is “en”. If you do not include this locale, the name property
 may end up returning None even when the record has an English name.</p>
 <p>Currently, the valid locale codes are:</p>
 <ul>
-<li>de &#8211; German</li>
-<li>en &#8211; English names may still include accented characters if that is
+<li>de – German</li>
+<li>en – English names may still include accented characters if that is
 the accepted spelling in English. In other words, English does not
 mean ASCII.</li>
-<li>es &#8211; Spanish</li>
-<li>fr &#8211; French</li>
-<li>ja &#8211; Japanese</li>
-<li>pt-BR &#8211; Brazilian Portuguese</li>
-<li>ru &#8211; Russian</li>
-<li>zh-CN &#8211; Simplified Chinese.</li>
+<li>es – Spanish</li>
+<li>fr – French</li>
+<li>ja – Japanese</li>
+<li>pt-BR – Brazilian Portuguese</li>
+<li>ru – Russian</li>
+<li>zh-CN – Simplified Chinese.</li>
 </ul>
 </li>
 </ul>
@@ -730,7 +727,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string. If no
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string. If no
 address is provided, the address that the web service is
 called from will be used.</td>
 </tr>
@@ -748,7 +745,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string. If no address
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string. If no address
 is provided, the address that the web service is called from will
 be used.</td>
 </tr>
@@ -766,7 +763,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> &#8211; IPv4 or IPv6 address as 
a string. If no address
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td 
class="field-body"><strong>ip_address</strong> – IPv4 or IPv6 address as a 
string. If no address
 is provided, the address that the web service is called from will
 be used.</td>
 </tr>
@@ -1000,7 +997,7 @@
 <code class="descname">registered_country</code><a class="headerlink" 
href="#geoip2.models.City.registered_country" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The registered country object for the requested IP address. This record
 represents the country where the ISP has registered a given IP block in
-and may differ from the user&#8217;s country.</p>
+and may differ from the user’s country.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1153,7 +1150,7 @@
 <code class="descname">registered_country</code><a class="headerlink" 
href="#geoip2.models.Country.registered_country" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The registered country object for the requested IP address. This record
 represents the country where the ISP has registered a given IP block in
-and may differ from the user&#8217;s country.</p>
+and may differ from the user’s country.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1303,7 +1300,7 @@
 <code class="descname">registered_country</code><a class="headerlink" 
href="#geoip2.models.Enterprise.registered_country" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The registered country object for the requested IP address. This record
 represents the country where the ISP has registered a given IP block in
-and may differ from the user&#8217;s country.</p>
+and may differ from the user’s country.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1511,7 +1508,7 @@
 <code class="descname">registered_country</code><a class="headerlink" 
href="#geoip2.models.Insights.registered_country" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The registered country object for the requested IP address. This record
 represents the country where the ISP has registered a given IP block in
-and may differ from the user&#8217;s country.</p>
+and may differ from the user’s country.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1588,7 +1585,7 @@
 <dl class="attribute">
 <dt id="geoip2.records.City.confidence">
 <code class="descname">confidence</code><a class="headerlink" 
href="#geoip2.records.City.confidence" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>A value from 0-100 indicating MaxMind&#8217;s
+<dd><p>A value from 0-100 indicating MaxMind’s
 confidence that the city is correct. This attribute is only available
 from the Insights end point and the GeoIP2 Enterprise database.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -1657,8 +1654,8 @@
 <dl class="attribute">
 <dt id="geoip2.records.Continent.code">
 <code class="descname">code</code><a class="headerlink" 
href="#geoip2.records.Continent.code" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>A two character continent code like &#8220;NA&#8221; (North America)
-or &#8220;OC&#8221; (Oceania).</p>
+<dd><p>A two character continent code like “NA” (North America)
+or “OC” (Oceania).</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1724,7 +1721,7 @@
 <dl class="attribute">
 <dt id="geoip2.records.Country.confidence">
 <code class="descname">confidence</code><a class="headerlink" 
href="#geoip2.records.Country.confidence" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>A value from 0-100 indicating MaxMind&#8217;s confidence that
+<dd><p>A value from 0-100 indicating MaxMind’s confidence that
 the country is correct. This attribute is only available from the
 Insights end point and the GeoIP2 Enterprise database.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -1905,7 +1902,7 @@
 <code class="descname">time_zone</code><a class="headerlink" 
href="#geoip2.records.Location.time_zone" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The time zone associated with location, as specified by the <a 
class="reference external" href="http://www.iana.org/time-zones";>IANA Time
 Zone Database</a>, e.g.,
-&#8220;America/New_York&#8221;.</p>
+“America/New_York”.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -1979,7 +1976,7 @@
 <dt id="geoip2.records.Postal.confidence">
 <code class="descname">confidence</code><a class="headerlink" 
href="#geoip2.records.Postal.confidence" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>A value from 0-100 indicating
-MaxMind&#8217;s confidence that the postal code is correct. This attribute is
+MaxMind’s confidence that the postal code is correct. This attribute is
 only available from the Insights end point and the GeoIP2 Enterprise
 database.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -2005,13 +2002,13 @@
 <em class="property">class </em><code 
class="descclassname">geoip2.records.</code><code 
class="descname">RepresentedCountry</code><span 
class="sig-paren">(</span><em>locales=None</em>, <em>**kwargs</em><span 
class="sig-paren">)</span><a class="headerlink" 
href="#geoip2.records.RepresentedCountry" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>Contains data for the represented country associated with an IP 
address.</p>
 <p>This class contains the country-level data associated with an IP address
-for the IP&#8217;s represented country. The represented country is the country
+for the IP’s represented country. The represented country is the country
 represented by something like a military base.</p>
 <p>Attributes:</p>
 <dl class="attribute">
 <dt id="geoip2.records.RepresentedCountry.confidence">
 <code class="descname">confidence</code><a class="headerlink" 
href="#geoip2.records.RepresentedCountry.confidence" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>A value from 0-100 indicating MaxMind&#8217;s confidence that
+<dd><p>A value from 0-100 indicating MaxMind’s confidence that
 the country is correct. This attribute is only available from the
 Insights end point and the GeoIP2 Enterprise database.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -2110,7 +2107,7 @@
 <dl class="attribute">
 <dt id="geoip2.records.Subdivision.confidence">
 <code class="descname">confidence</code><a class="headerlink" 
href="#geoip2.records.Subdivision.confidence" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>This is a value from 0-100 indicating MaxMind&#8217;s
+<dd><p>This is a value from 0-100 indicating MaxMind’s
 confidence that the subdivision is correct. This attribute is only
 available from the Insights end point and the GeoIP2 Enterprise
 database.</p>
@@ -2279,8 +2276,8 @@
 <dt id="geoip2.records.Traits.domain">
 <code class="descname">domain</code><a class="headerlink" 
href="#geoip2.records.Traits.domain" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The second level domain associated with the
-IP address. This will be something like &#8220;example.com&#8221; or
-&#8220;example.co.uk&#8221;, not &#8220;foo.example.com&#8221;. This attribute 
is only available
+IP address. This will be something like “example.com” or
+“example.co.uk”, not “foo.example.com”. This attribute is only available
 from the City and Insights web service end points and the GeoIP2
 Enterprise database.</p>
 <table class="docutils field-list" frame="void" rules="none">
@@ -2297,7 +2294,7 @@
 <dt id="geoip2.records.Traits.ip_address">
 <code class="descname">ip_address</code><a class="headerlink" 
href="#geoip2.records.Traits.ip_address" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The IP address that the data in the model
-is for. If you performed a &#8220;me&#8221; lookup against the web service, 
this
+is for. If you performed a “me” lookup against the web service, this
 will be the externally routable IP address for the system the code is
 running on. If the system is behind a NAT, this may differ from the IP
 address locally assigned to it.</p>
@@ -2312,6 +2309,21 @@
 </dd></dl>
 
 <dl class="attribute">
+<dt id="geoip2.records.Traits.is_anonymous">
+<code class="descname">is_anonymous</code><a class="headerlink" 
href="#geoip2.records.Traits.is_anonymous" title="Permalink to this 
definition">¶</a></dt>
+<dd><p>This is true if the IP address belongs to any sort of anonymous network.
+This attribute is only available from GeoIP2 Precision Insights.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td 
class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
 <dt id="geoip2.records.Traits.is_anonymous_proxy">
 <code class="descname">is_anonymous_proxy</code><a class="headerlink" 
href="#geoip2.records.Traits.is_anonymous_proxy" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>This is true if the IP is an anonymous
@@ -2332,6 +2344,36 @@
 </dd></dl>
 
 <dl class="attribute">
+<dt id="geoip2.records.Traits.is_anonymous_vpn">
+<code class="descname">is_anonymous_vpn</code><a class="headerlink" 
href="#geoip2.records.Traits.is_anonymous_vpn" title="Permalink to this 
definition">¶</a></dt>
+<dd><p>This is true if the IP address belongs to an anonymous VPN system.
+This attribute is only available from GeoIP2 Precision Insights.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td 
class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="geoip2.records.Traits.is_hosting_provider">
+<code class="descname">is_hosting_provider</code><a class="headerlink" 
href="#geoip2.records.Traits.is_hosting_provider" title="Permalink to this 
definition">¶</a></dt>
+<dd><p>This is true if the IP address belongs to a hosting provider.
+This attribute is only available from GeoIP2 Precision Insights.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td 
class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
 <dt id="geoip2.records.Traits.is_legitimate_proxy">
 <code class="descname">is_legitimate_proxy</code><a class="headerlink" 
href="#geoip2.records.Traits.is_legitimate_proxy" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>This attribute is true if MaxMind believes this IP address to be a
@@ -2348,6 +2390,21 @@
 </dd></dl>
 
 <dl class="attribute">
+<dt id="geoip2.records.Traits.is_public_proxy">
+<code class="descname">is_public_proxy</code><a class="headerlink" 
href="#geoip2.records.Traits.is_public_proxy" title="Permalink to this 
definition">¶</a></dt>
+<dd><p>This is true if the IP address belongs to a public proxy. This attribute
+is only available from GeoIP2 Precision Insights.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td 
class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
 <dt id="geoip2.records.Traits.is_satellite_provider">
 <code class="descname">is_satellite_provider</code><a class="headerlink" 
href="#geoip2.records.Traits.is_satellite_provider" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>This is true if the IP address is from a satellite provider that
@@ -2369,6 +2426,21 @@
 </dd></dl>
 
 <dl class="attribute">
+<dt id="geoip2.records.Traits.is_tor_exit_node">
+<code class="descname">is_tor_exit_node</code><a class="headerlink" 
href="#geoip2.records.Traits.is_tor_exit_node" title="Permalink to this 
definition">¶</a></dt>
+<dd><p>This is true if the IP address is a Tor exit node.  This attribute is
+only available from GeoIP2 Precision Insights.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Type:</th><td 
class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
 <dt id="geoip2.records.Traits.isp">
 <code class="descname">isp</code><a class="headerlink" 
href="#geoip2.records.Traits.isp" title="Permalink to this 
definition">¶</a></dt>
 <dd><p>The name of the ISP associated with the IP address. This attribute is
@@ -2470,8 +2542,8 @@
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Variables:</th><td 
class="field-body"><ul class="first last simple">
-<li><strong>http_status</strong> &#8211; The HTTP status code returned</li>
-<li><strong>uri</strong> &#8211; The URI queried</li>
+<li><strong>http_status</strong> – The HTTP status code returned</li>
+<li><strong>uri</strong> – The URI queried</li>
 </ul>
 </td>
 </tr>
@@ -2537,12 +2609,12 @@
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="#">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="#">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2013-2016, MaxMind, Inc..
-      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.5.1.
+      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.6.5.
     </div>
   </body>
 </html>
\ No newline at end of file
Binary files old/geoip2-2.5.0/docs/html/objects.inv and 
new/geoip2-2.6.0/docs/html/objects.inv differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/py-modindex.html 
new/geoip2-2.6.0/docs/html/py-modindex.html
--- old/geoip2-2.5.0/docs/html/py-modindex.html 2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/docs/html/py-modindex.html 2017-10-27 22:02:24.000000000 
+0200
@@ -1,20 +1,17 @@
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
 
-
 <html xmlns="http://www.w3.org/1999/xhtml";>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Python Module Index &#8212; geoip2 2.5.0 documentation</title>
-    
+    <title>Python Module Index &#8212; geoip2 2.6.0 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '2.5.0',
+        VERSION:     '2.6.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true,
@@ -30,7 +27,7 @@
 
 
   </head>
-  <body role="document">
+  <body>
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -40,7 +37,7 @@
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
       <div class="sphinxsidebar" role="navigation" aria-label="main 
navigation">
@@ -122,12 +119,12 @@
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2013-2016, MaxMind, Inc..
-      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.5.1.
+      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.6.5.
     </div>
   </body>
 </html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/search.html 
new/geoip2-2.6.0/docs/html/search.html
--- old/geoip2-2.5.0/docs/html/search.html      2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/docs/html/search.html      2017-10-27 22:02:24.000000000 
+0200
@@ -1,20 +1,17 @@
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
 
-
 <html xmlns="http://www.w3.org/1999/xhtml";>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Search &#8212; geoip2 2.5.0 documentation</title>
-    
+    <title>Search &#8212; geoip2 2.6.0 documentation</title>
     <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '2.5.0',
+        VERSION:     '2.6.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true,
@@ -35,7 +32,7 @@
    
 
   </head>
-  <body role="document">
+  <body>
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -45,7 +42,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">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
       <div class="sphinxsidebar" role="navigation" aria-label="main 
navigation">
@@ -96,12 +93,12 @@
         <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">geoip2 2.5.0 
documentation</a> &#187;</li> 
+        <li class="nav-item nav-item-0"><a href="index.html">geoip2 2.6.0 
documentation</a> &#187;</li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2013-2016, MaxMind, Inc..
-      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.5.1.
+      Created using <a href="http://sphinx-doc.org/";>Sphinx</a> 1.6.5.
     </div>
   </body>
 </html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/docs/html/searchindex.js 
new/geoip2-2.6.0/docs/html/searchindex.js
--- old/geoip2-2.5.0/docs/html/searchindex.js   2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/docs/html/searchindex.js   2017-10-27 22:02:24.000000000 
+0200
@@ -1 +1 @@
-Search.setIndex({docnames:["index"],envversion:51,filenames:["index.rst"],objects:{"":{geoip2:[0,0,0,"-"]},"geoip2.database":{Reader:[0,1,1,""]},"geoip2.database.Reader":{anonymous_ip:[0,2,1,""],asn:[0,2,1,""],city:[0,2,1,""],close:[0,2,1,""],connection_type:[0,2,1,""],country:[0,2,1,""],domain:[0,2,1,""],enterprise:[0,2,1,""],isp:[0,2,1,""],metadata:[0,2,1,""]},"geoip2.errors":{AddressNotFoundError:[0,3,1,""],AuthenticationError:[0,3,1,""],GeoIP2Error:[0,3,1,""],HTTPError:[0,3,1,""],InvalidRequestError:[0,3,1,""],OutOfQueriesError:[0,3,1,""],PermissionRequiredError:[0,3,1,""]},"geoip2.models":{ASN:[0,1,1,""],AnonymousIP:[0,1,1,""],City:[0,1,1,""],ConnectionType:[0,1,1,""],Country:[0,1,1,""],Domain:[0,1,1,""],Enterprise:[0,1,1,""],ISP:[0,1,1,""],Insights:[0,1,1,""],SimpleModel:[0,1,1,""]},"geoip2.models.ASN":{autonomous_system_number:[0,4,1,""],autonomous_system_organization:[0,4,1,""],ip_address:[0,4,1,""]},"geoip2.models.AnonymousIP":{ip_address:[0,4,1,""],is_anonymous:[0,4,1,""],is_anonymous_vpn:[0,4,1,""],is_hosting_provider:[0,4,1,""],is_public_proxy:[0,4,1,""],is_tor_exit_node:[0,4,1,""]},"geoip2.models.City":{city:[0,4,1,""],continent:[0,4,1,""],country:[0,4,1,""],location:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],subdivisions:[0,4,1,""],traits:[0,4,1,""]},"geoip2.models.ConnectionType":{connection_type:[0,4,1,""],ip_address:[0,4,1,""]},"geoip2.models.Country":{continent:[0,4,1,""],country:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],traits:[0,4,1,""]},"geoip2.models.Domain":{domain:[0,4,1,""],ip_address:[0,4,1,""]},"geoip2.models.Enterprise":{city:[0,4,1,""],continent:[0,4,1,""],country:[0,4,1,""],location:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],subdivisions:[0,4,1,""],traits:[0,4,1,""]},"geoip2.models.ISP":{autonomous_system_number:[0,4,1,""],autonomous_system_organization:[0,4,1,""],ip_address:[0,4,1,""],isp:[0,4,1,""],organization:[0,4,1,""]},"geoip2.models.Insights":{city:[0,4,1,""],continent:[0,4,1,""],country:[0,4,1,""],location:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],subdivisions:[0,4,1,""],traits:[0,4,1,""]},"geoip2.records":{City:[0,1,1,""],Continent:[0,1,1,""],Country:[0,1,1,""],Location:[0,1,1,""],MaxMind:[0,1,1,""],PlaceRecord:[0,1,1,""],Postal:[0,1,1,""],Record:[0,1,1,""],RepresentedCountry:[0,1,1,""],Subdivision:[0,1,1,""],Subdivisions:[0,1,1,""],Traits:[0,1,1,""]},"geoip2.records.City":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Continent":{code:[0,4,1,""],geoname_id:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Country":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],iso_code:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Location":{accuracy_radius:[0,4,1,""],average_income:[0,4,1,""],latitude:[0,4,1,""],longitude:[0,4,1,""],metro_code:[0,4,1,""],population_density:[0,4,1,""],time_zone:[0,4,1,""]},"geoip2.records.MaxMind":{queries_remaining:[0,4,1,""]},"geoip2.records.PlaceRecord":{name:[0,4,1,""]},"geoip2.records.Postal":{code:[0,4,1,""],confidence:[0,4,1,""]},"geoip2.records.RepresentedCountry":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],iso_code:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""],type:[0,4,1,""]},"geoip2.records.Subdivision":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],iso_code:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Subdivisions":{most_specific:[0,4,1,""]},"geoip2.records.Traits":{autonomous_system_number:[0,4,1,""],autonomous_system_organization:[0,4,1,""],connection_type:[0,4,1,""],domain:[0,4,1,""],ip_address:[0,4,1,""],is_anonymous_proxy:[0,4,1,""],is_legitimate_proxy:[0,4,1,""],is_satellite_provider:[0,4,1,""],isp:[0,4,1,""],organization:[0,4,1,""],user_type:[0,4,1,""]},"geoip2.webservice":{Client:[0,1,1,""]},"geoip2.webservice.Client":{city:[0,2,1,""],country:[0,2,1,""],insights:[0,2,1,""]},geoip2:{database:[0,0,0,"-"],errors:[0,0,0,"-"],models:[0,0,0,"-"],records:[0,0,0,"-"],webservice:[0,0,0,"-"]}},objnames:{"0":["py","module","Python
 module"],"1":["py","class","Python class"],"2":["py","method","Python 
method"],"3":["py","exception","Python 
exception"],"4":["py","attribute","Python 
attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception","4":"py:attribute"},terms:{"4xx":0,"5xx":0,"\u7f8e\u56fd":0,"abstract":0,"case":0,"class":0,"default":0,"final":0,"float":0,"import":0,"int":0,"long":0,"new":0,"public":0,"throw":0,"true":0,"while":0,For:0,The:0,There:0,These:0,Use:0,abl:0,about:0,accent:0,accept:0,access:0,account:0,accuraci:0,accuracy_radiu:0,across:0,add:0,added:0,addit:0,address:0,addressnotfounderror:0,adword:0,after:0,against:0,all:0,alpha:0,also:0,altern:0,alwai:0,america:0,ani:0,anonproxi:0,anonymous_ip:0,anonymousip:0,apach:0,appropri:0,approxim:0,argument:0,around:0,ascii:0,assign:0,assist:0,associ:0,attribut:0,authent:0,authenticationerror:0,automat:0,autonom:0,autonomous_system_numb:0,autonomous_system_organ:0,avail:0,averag:0,average_incom:0,base:0,basic:0,becaus:0,becom:0,been:0,behind:0,believ:0,belong:0,besid:0,between:0,block:0,bodi:0,bool:0,both:0,brazilian:0,bug:0,busi:0,cabl:0,cafe:0,call:0,can:0,carrier:0,cellular:0,center:0,chang:0,charact:0,check:0,chines:0,circl:0,close:0,code:0,collect:0,colleg:0,com:0,confid:0,connection_typ:0,connectiontyp:0,constructor:0,contact:0,contain:0,content_delivery_network:0,contin:0,copyright:0,corpor:0,correct:0,correspond:0,corrupt:0,could:0,countri:0,coverag:0,cpython:0,creat:0,creation:0,current:0,custom:0,deprec:0,detail:0,dev:0,devic:0,dialup:0,dict:0,differ:0,directori:0,discourag:0,distribut:0,doc:0,document:0,doe:0,doing:0,dollar:0,download:0,dsl:0,due:0,each:0,easy_instal:0,edit:0,edu:0,either:0,element:0,empti:0,end:0,endpoint:0,england:0,english:0,entir:0,entiti:0,estim:0,etc:0,even:0,everi:0,exist:0,exit:0,expand:0,expens:0,explicit:0,explicitli:0,extend:0,extern:0,factor:0,fail:0,fals:0,faq:0,featur:0,few:0,field:0,file:0,filenam:0,filenotfounderror:0,find:0,first:0,follow:0,foo:0,format:0,found:0,free:0,french:0,from:0,fund:0,further:0,futur:0,gener:0,geograph:0,geoip2error:0,geoip:0,geolite2:0,geoname_id:0,german:0,get:0,github:0,given:0,googl:0,govern:0,has:0,have:0,help:0,host:0,hostnam:0,household:0,http:0,http_statu:0,httperror:0,iana:0,identifi:0,imprecis:0,inc:0,includ:0,incom:0,incorpor:0,incorrect:0,incorrectli:0,increas:0,index:0,inform:0,inher:0,insight:0,instanc:0,instead:0,instruct:0,integ:0,intern:0,internet:0,invalid:0,invaliddatabaseerror:0,invalidrequesterror:0,ioerror:0,ip_address:0,ipv4:0,ipv6:0,is_anonym:0,is_anonymous_proxi:0,is_anonymous_vpn:0,is_hosting_provid:0,is_legitimate_proxi:0,is_public_proxi:0,is_satellite_provid:0,is_tor_exit_nod:0,iso:0,iso_cod:0,issu:0,its:0,itself:0,japanes:0,keyword:0,kilomet:0,kingdom:0,kwarg:0,largest:0,latitud:0,least:0,legitim:0,level:0,libmaxminddb:0,librari:0,licens:0,license_kei:0,like:0,link:0,list:0,local:0,locat:0,longitud:0,look:0,lookup:0,ltd:0,made:0,mai:0,maintain:0,make:0,mani:0,map:0,maxminddb:0,mean:0,messag:0,metadata:0,method:0,metro:0,metro_cod:0,militari:0,minneapoli:0,minnesota:0,mistak:0,mmdb:0,mobil:0,mode:0,more:0,most:0,most_specif:0,move:0,multipl:0,must:0,my_license_kei:0,name:0,nat:0,need:0,network:0,new_york:0,node:0,non:0,none:0,north:0,note:0,now:0,number:0,object:0,occur:0,oceania:0,offer:0,often:0,older:0,onc:0,one:0,onli:0,open:0,order:0,org:0,organ:0,other:0,our:0,out:0,outofquerieserror:0,output:0,oversea:0,own:0,oxford:0,oxfordshir:0,packag:0,page:0,pai:0,paid:0,paramet:0,part:0,particular:0,pass:0,path:0,per:0,perform:0,permiss:0,permissionrequirederror:0,piec:0,pip:0,place:0,placerecord:0,pleas:0,point:0,popul:0,population_dens:0,portion:0,portugues:0,possibl:0,postal:0,precis:0,premium:0,present:0,properti:0,provid:0,proxi:0,pty:0,pypi:0,queri:0,queries_remain:0,radiu:0,rais:0,raw:0,raw_respons:0,readabl:0,recommend:0,region:0,regist:0,registered_countri:0,relat:0,releas:0,relev:0,remain:0,replac:0,repres:0,represented_countri:0,representedcountri:0,request:0,resid:0,residenti:0,respons:0,result:0,reus:0,routabl:0,router:0,run:0,runtimeerror:0,russian:0,same:0,satellit:0,school:0,search:0,search_engine_spid:0,second:0,see:0,semant:0,serv:0,set:0,should:0,signific:0,similar:0,simplemodel:0,simplifi:0,sinc:0,site:0,smallest:0,some:0,someth:0,sort:0,sourc:0,spanish:0,specif:0,specifi:0,spell:0,squar:0,state:0,statu:0,still:0,string:0,strongli:0,subclass:0,subdivis:0,submit:0,succe:0,suffici:0,sure:0,system:0,take:0,telstra:0,test:0,than:0,thei:0,thi:0,thing:0,three:0,thrown:0,time:0,time_zon:0,timeout:0,tor:0,tracker:0,trait:0,transport:0,travel:0,tupl:0,turn:0,two:0,umn:0,unanticip:0,unicod:0,uniqu:0,unit:0,unpopul:0,uri:0,used:0,user:0,user_id:0,user_typ:0,uses:0,using:0,valid:0,valueerror:0,vari:0,variabl:0,veri:0,view:0,vpn:0,want:0,were:0,when:0,where:0,which:0,wish:0,within:0,word:0,work:0,world:0,would:0,www:0,you:0,your:0,zone:0},titles:["MaxMind
 GeoIP2 Python 
API"],titleterms:{"return":0,anonym:0,api:0,asn:0,citi:0,client:0,connect:0,data:0,databas:0,descript:0,dictionari:0,domain:0,enterpris:0,error:0,exampl:0,except:0,extens:0,geoip2:0,geoloc:0,geonam:0,indic:0,instal:0,integr:0,isp:0,kei:0,maxmind:0,model:0,modul:0,problem:0,python:0,reader:0,record:0,report:0,requir:0,servic:0,ssl:0,support:0,tabl:0,type:0,usag:0,use:0,valu:0,version:0,web:0,webservic:0,what:0}})
\ No newline at end of file
+Search.setIndex({docnames:["index"],envversion:53,filenames:["index.rst"],objects:{"":{geoip2:[0,0,0,"-"]},"geoip2.database":{Reader:[0,1,1,""]},"geoip2.database.Reader":{anonymous_ip:[0,2,1,""],asn:[0,2,1,""],city:[0,2,1,""],close:[0,2,1,""],connection_type:[0,2,1,""],country:[0,2,1,""],domain:[0,2,1,""],enterprise:[0,2,1,""],isp:[0,2,1,""],metadata:[0,2,1,""]},"geoip2.errors":{AddressNotFoundError:[0,3,1,""],AuthenticationError:[0,3,1,""],GeoIP2Error:[0,3,1,""],HTTPError:[0,3,1,""],InvalidRequestError:[0,3,1,""],OutOfQueriesError:[0,3,1,""],PermissionRequiredError:[0,3,1,""]},"geoip2.models":{ASN:[0,1,1,""],AnonymousIP:[0,1,1,""],City:[0,1,1,""],ConnectionType:[0,1,1,""],Country:[0,1,1,""],Domain:[0,1,1,""],Enterprise:[0,1,1,""],ISP:[0,1,1,""],Insights:[0,1,1,""],SimpleModel:[0,1,1,""]},"geoip2.models.ASN":{autonomous_system_number:[0,4,1,""],autonomous_system_organization:[0,4,1,""],ip_address:[0,4,1,""]},"geoip2.models.AnonymousIP":{ip_address:[0,4,1,""],is_anonymous:[0,4,1,""],is_anonymous_vpn:[0,4,1,""],is_hosting_provider:[0,4,1,""],is_public_proxy:[0,4,1,""],is_tor_exit_node:[0,4,1,""]},"geoip2.models.City":{city:[0,4,1,""],continent:[0,4,1,""],country:[0,4,1,""],location:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],subdivisions:[0,4,1,""],traits:[0,4,1,""]},"geoip2.models.ConnectionType":{connection_type:[0,4,1,""],ip_address:[0,4,1,""]},"geoip2.models.Country":{continent:[0,4,1,""],country:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],traits:[0,4,1,""]},"geoip2.models.Domain":{domain:[0,4,1,""],ip_address:[0,4,1,""]},"geoip2.models.Enterprise":{city:[0,4,1,""],continent:[0,4,1,""],country:[0,4,1,""],location:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],subdivisions:[0,4,1,""],traits:[0,4,1,""]},"geoip2.models.ISP":{autonomous_system_number:[0,4,1,""],autonomous_system_organization:[0,4,1,""],ip_address:[0,4,1,""],isp:[0,4,1,""],organization:[0,4,1,""]},"geoip2.models.Insights":{city:[0,4,1,""],continent:[0,4,1,""],country:[0,4,1,""],location:[0,4,1,""],maxmind:[0,4,1,""],registered_country:[0,4,1,""],represented_country:[0,4,1,""],subdivisions:[0,4,1,""],traits:[0,4,1,""]},"geoip2.records":{City:[0,1,1,""],Continent:[0,1,1,""],Country:[0,1,1,""],Location:[0,1,1,""],MaxMind:[0,1,1,""],PlaceRecord:[0,1,1,""],Postal:[0,1,1,""],Record:[0,1,1,""],RepresentedCountry:[0,1,1,""],Subdivision:[0,1,1,""],Subdivisions:[0,1,1,""],Traits:[0,1,1,""]},"geoip2.records.City":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Continent":{code:[0,4,1,""],geoname_id:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Country":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],iso_code:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Location":{accuracy_radius:[0,4,1,""],average_income:[0,4,1,""],latitude:[0,4,1,""],longitude:[0,4,1,""],metro_code:[0,4,1,""],population_density:[0,4,1,""],time_zone:[0,4,1,""]},"geoip2.records.MaxMind":{queries_remaining:[0,4,1,""]},"geoip2.records.PlaceRecord":{name:[0,4,1,""]},"geoip2.records.Postal":{code:[0,4,1,""],confidence:[0,4,1,""]},"geoip2.records.RepresentedCountry":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],iso_code:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""],type:[0,4,1,""]},"geoip2.records.Subdivision":{confidence:[0,4,1,""],geoname_id:[0,4,1,""],iso_code:[0,4,1,""],name:[0,4,1,""],names:[0,4,1,""]},"geoip2.records.Subdivisions":{most_specific:[0,4,1,""]},"geoip2.records.Traits":{autonomous_system_number:[0,4,1,""],autonomous_system_organization:[0,4,1,""],connection_type:[0,4,1,""],domain:[0,4,1,""],ip_address:[0,4,1,""],is_anonymous:[0,4,1,""],is_anonymous_proxy:[0,4,1,""],is_anonymous_vpn:[0,4,1,""],is_hosting_provider:[0,4,1,""],is_legitimate_proxy:[0,4,1,""],is_public_proxy:[0,4,1,""],is_satellite_provider:[0,4,1,""],is_tor_exit_node:[0,4,1,""],isp:[0,4,1,""],organization:[0,4,1,""],user_type:[0,4,1,""]},"geoip2.webservice":{Client:[0,1,1,""]},"geoip2.webservice.Client":{city:[0,2,1,""],country:[0,2,1,""],insights:[0,2,1,""]},geoip2:{database:[0,0,0,"-"],errors:[0,0,0,"-"],models:[0,0,0,"-"],records:[0,0,0,"-"],webservice:[0,0,0,"-"]}},objnames:{"0":["py","module","Python
 module"],"1":["py","class","Python class"],"2":["py","method","Python 
method"],"3":["py","exception","Python 
exception"],"4":["py","attribute","Python 
attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception","4":"py:attribute"},terms:{"4xx":0,"5xx":0,"\u7f8e\u56fd":0,"abstract":0,"case":0,"class":0,"default":0,"final":0,"float":0,"import":0,"int":0,"long":0,"new":0,"public":0,"throw":0,"true":0,"while":0,For:0,The:0,There:0,These:0,Use:0,abl:0,about:0,accent:0,accept:0,access:0,account:0,accuraci:0,accuracy_radiu:0,across:0,add:0,added:0,addit:0,address:0,addressnotfounderror:0,adword:0,after:0,against:0,all:0,alpha:0,also:0,altern:0,alwai:0,america:0,ani:0,anonproxi:0,anonymous_ip:0,anonymousip:0,apach:0,appropri:0,approxim:0,argument:0,around:0,ascii:0,assign:0,assist:0,associ:0,attribut:0,authent:0,authenticationerror:0,automat:0,autonom:0,autonomous_system_numb:0,autonomous_system_organ:0,avail:0,averag:0,average_incom:0,base:0,basic:0,becaus:0,becom:0,been:0,behind:0,believ:0,belong:0,besid:0,between:0,block:0,bodi:0,bool:0,both:0,brazilian:0,bug:0,busi:0,cabl:0,cafe:0,call:0,can:0,carrier:0,cellular:0,center:0,chang:0,charact:0,check:0,chines:0,circl:0,close:0,code:0,collect:0,colleg:0,com:0,confid:0,connection_typ:0,connectiontyp:0,constructor:0,contact:0,contain:0,content_delivery_network:0,contin:0,copyright:0,corpor:0,correct:0,correspond:0,corrupt:0,could:0,countri:0,coverag:0,cpython:0,creat:0,creation:0,current:0,custom:0,deprec:0,detail:0,dev:0,devic:0,dialup:0,dict:0,differ:0,directori:0,discourag:0,distribut:0,doc:0,document:0,doe:0,doing:0,dollar:0,download:0,dsl:0,due:0,each:0,easy_instal:0,edit:0,edu:0,either:0,element:0,empti:0,end:0,endpoint:0,england:0,english:0,entir:0,entiti:0,estim:0,etc:0,even:0,everi:0,exist:0,exit:0,expand:0,expens:0,explicit:0,explicitli:0,extend:0,extern:0,factor:0,fail:0,fals:0,faq:0,featur:0,few:0,field:0,file:0,filenam:0,filenotfounderror:0,find:0,first:0,follow:0,foo:0,format:0,found:0,free:0,french:0,from:0,fund:0,further:0,futur:0,gener:0,geograph:0,geoip2error:0,geoip:0,geolite2:0,geoname_id:0,german:0,get:0,github:0,given:0,googl:0,govern:0,has:0,have:0,help:0,host:0,hostnam:0,household:0,http:0,http_statu:0,httperror:0,iana:0,identifi:0,imprecis:0,inc:0,includ:0,incom:0,incorpor:0,incorrect:0,incorrectli:0,increas:0,index:0,inform:0,inher:0,insight:0,instanc:0,instead:0,instruct:0,integ:0,intern:0,internet:0,invalid:0,invaliddatabaseerror:0,invalidrequesterror:0,ioerror:0,ip_address:0,ipv4:0,ipv6:0,is_anonym:0,is_anonymous_proxi:0,is_anonymous_vpn:0,is_hosting_provid:0,is_legitimate_proxi:0,is_public_proxi:0,is_satellite_provid:0,is_tor_exit_nod:0,iso:0,iso_cod:0,issu:0,its:0,itself:0,japanes:0,keyword:0,kilomet:0,kingdom:0,kwarg:0,largest:0,latitud:0,least:0,legitim:0,level:0,libmaxminddb:0,librari:0,licens:0,license_kei:0,like:0,link:0,list:0,local:0,locat:0,longitud:0,look:0,lookup:0,ltd:0,made:0,mai:0,maintain:0,make:0,mani:0,map:0,maxminddb:0,mean:0,messag:0,metadata:0,method:0,metro:0,metro_cod:0,militari:0,minneapoli:0,minnesota:0,mistak:0,mmdb:0,mobil:0,mode:0,more:0,most:0,most_specif:0,move:0,multipl:0,must:0,my_license_kei:0,name:0,nat:0,need:0,network:0,new_york:0,node:0,non:0,none:0,north:0,note:0,now:0,number:0,object:0,occur:0,oceania:0,offer:0,often:0,older:0,onc:0,one:0,onli:0,open:0,order:0,org:0,organ:0,other:0,our:0,out:0,outofquerieserror:0,output:0,oversea:0,own:0,oxford:0,oxfordshir:0,packag:0,page:0,pai:0,paid:0,paramet:0,part:0,particular:0,pass:0,path:0,per:0,perform:0,permiss:0,permissionrequirederror:0,piec:0,pip:0,place:0,placerecord:0,pleas:0,point:0,popul:0,population_dens:0,portion:0,portugues:0,possibl:0,postal:0,precis:0,premium:0,present:0,properti:0,provid:0,proxi:0,pty:0,pypi:0,queri:0,queries_remain:0,radiu:0,rais:0,raw:0,raw_respons:0,readabl:0,recommend:0,region:0,regist:0,registered_countri:0,relat:0,releas:0,relev:0,remain:0,replac:0,repres:0,represented_countri:0,representedcountri:0,request:0,resid:0,residenti:0,respons:0,result:0,reus:0,routabl:0,router:0,run:0,runtimeerror:0,russian:0,same:0,satellit:0,school:0,search:0,search_engine_spid:0,second:0,see:0,semant:0,serv:0,set:0,should:0,signific:0,similar:0,simplemodel:0,simplifi:0,sinc:0,site:0,smallest:0,some:0,someth:0,sort:0,sourc:0,spanish:0,specif:0,specifi:0,spell:0,squar:0,state:0,statu:0,still:0,string:0,strongli:0,subclass:0,subdivis:0,submit:0,succe:0,suffici:0,sure:0,system:0,take:0,telstra:0,test:0,than:0,thei:0,thi:0,thing:0,three:0,thrown:0,time:0,time_zon:0,timeout:0,tor:0,tracker:0,trait:0,transport:0,travel:0,tupl:0,turn:0,two:0,umn:0,unanticip:0,unicod:0,uniqu:0,unit:0,unpopul:0,uri:0,used:0,user:0,user_id:0,user_typ:0,uses:0,using:0,valid:0,valueerror:0,vari:0,variabl:0,veri:0,view:0,vpn:0,want:0,were:0,when:0,where:0,which:0,wish:0,within:0,word:0,work:0,world:0,would:0,www:0,you:0,your:0,zone:0},titles:["MaxMind
 GeoIP2 Python 
API"],titleterms:{"return":0,anonym:0,api:0,asn:0,citi:0,client:0,connect:0,data:0,databas:0,descript:0,dictionari:0,domain:0,enterpris:0,error:0,exampl:0,except:0,extens:0,geoip2:0,geoloc:0,geonam:0,indic:0,instal:0,integr:0,isp:0,kei:0,maxmind:0,model:0,modul:0,problem:0,python:0,reader:0,record:0,report:0,requir:0,servic:0,ssl:0,support:0,tabl:0,type:0,usag:0,use:0,valu:0,version:0,web:0,webservic:0,what:0}})
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/geoip2/__init__.py 
new/geoip2-2.6.0/geoip2/__init__.py
--- old/geoip2-2.5.0/geoip2/__init__.py 2017-05-08 21:11:49.000000000 +0200
+++ new/geoip2-2.6.0/geoip2/__init__.py 2017-10-27 22:00:33.000000000 +0200
@@ -1,7 +1,7 @@
 # pylint:disable=C0111
 
 __title__ = 'geoip2'
-__version__ = '2.5.0'
+__version__ = '2.6.0'
 __author__ = 'Gregory Oschwald'
 __license__ = 'Apache License, Version 2.0'
 __copyright__ = 'Copyright (c) 2013-2017 Maxmind, Inc.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/geoip2/records.py 
new/geoip2-2.6.0/geoip2/records.py
--- old/geoip2-2.5.0/geoip2/records.py  2017-05-08 20:46:11.000000000 +0200
+++ new/geoip2-2.6.0/geoip2/records.py  2017-10-27 21:57:01.000000000 +0200
@@ -517,6 +517,13 @@
 
       :type: unicode
 
+    .. attribute:: is_anonymous
+
+      This is true if the IP address belongs to any sort of anonymous network.
+      This attribute is only available from GeoIP2 Precision Insights.
+
+      :type: bool
+
     .. attribute:: is_anonymous_proxy
 
       This is true if the IP is an anonymous
@@ -530,6 +537,20 @@
         <https://www.maxmind.com/en/geoip2-anonymous-ip-database GeoIP2>`_
         instead.
 
+    .. attribute:: is_anonymous_vpn
+
+      This is true if the IP address belongs to an anonymous VPN system.
+      This attribute is only available from GeoIP2 Precision Insights.
+
+      :type: bool
+
+    .. attribute:: is_hosting_provider
+
+      This is true if the IP address belongs to a hosting provider.
+      This attribute is only available from GeoIP2 Precision Insights.
+
+      :type: bool
+
     .. attribute:: is_legitimate_proxy
 
       This attribute is true if MaxMind believes this IP address to be a
@@ -538,6 +559,13 @@
 
       :type: bool
 
+    .. attribute:: is_public_proxy
+
+      This is true if the IP address belongs to a public proxy. This attribute
+      is only available from GeoIP2 Precision Insights.
+
+      :type: bool
+
     .. attribute:: is_satellite_provider
 
       This is true if the IP address is from a satellite provider that
@@ -551,6 +579,13 @@
         output does not provide sufficiently relevant data for us to maintain
         it.
 
+    .. attribute:: is_tor_exit_node
+
+      This is true if the IP address is a Tor exit node.  This attribute is
+      only available from GeoIP2 Precision Insights.
+
+      :type: bool
+
     .. attribute:: isp
 
       The name of the ISP associated with the IP address. This attribute is
@@ -597,15 +632,23 @@
 
     _valid_attributes = set([
         'autonomous_system_number', 'autonomous_system_organization',
-        'connection_type', 'domain', 'is_anonymous_proxy',
-        'is_legitimate_proxy', 'is_satellite_provider', 'isp', 'ip_address',
-        'organization', 'user_type'
+        'connection_type', 'domain', 'is_anonymous', 'is_anonymous_proxy',
+        'is_anonymous_vpn', 'is_hosting_provider', 'is_legitimate_proxy',
+        'is_public_proxy', 'is_satellite_provider', 'is_tor_exit_node',
+        'is_satellite_provider', 'isp', 'ip_address', 'organization',
+        'user_type'
     ])
 
     def __init__(self, **kwargs):
         for k in [
-                'is_anonymous_proxy', 'is_legitimate_proxy',
-                'is_satellite_provider'
+                'is_anonymous',
+                'is_anonymous_proxy',
+                'is_anonymous_vpn',
+                'is_hosting_provider',
+                'is_legitimate_proxy',
+                'is_public_proxy',
+                'is_satellite_provider',
+                'is_tor_exit_node',
         ]:
             kwargs[k] = bool(kwargs.get(k, False))
         super(Traits, self).__init__(**kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/geoip2.egg-info/PKG-INFO 
new/geoip2-2.6.0/geoip2.egg-info/PKG-INFO
--- old/geoip2-2.5.0/geoip2.egg-info/PKG-INFO   2017-05-08 21:13:04.000000000 
+0200
+++ new/geoip2-2.6.0/geoip2.egg-info/PKG-INFO   2017-10-27 22:02:24.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: geoip2
-Version: 2.5.0
+Version: 2.6.0
 Summary: MaxMind GeoIP2 API
 Home-page: http://www.maxmind.com/
 Author: Gregory Oschwald
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/setup.cfg new/geoip2-2.6.0/setup.cfg
--- old/geoip2-2.5.0/setup.cfg  2017-05-08 21:13:04.000000000 +0200
+++ new/geoip2-2.6.0/setup.cfg  2017-10-27 22:02:24.000000000 +0200
@@ -9,4 +9,5 @@
 [egg_info]
 tag_build = 
 tag_date = 0
+tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/geoip2-2.5.0/tests/models_test.py 
new/geoip2-2.6.0/tests/models_test.py
--- old/geoip2-2.5.0/tests/models_test.py       2017-05-08 20:46:11.000000000 
+0200
+++ new/geoip2-2.6.0/tests/models_test.py       2017-10-27 21:57:01.000000000 
+0200
@@ -90,8 +90,13 @@
                 'autonomous_system_organization': 'AS Organization',
                 'domain': 'example.com',
                 'ip_address': '1.2.3.4',
-                'is_anonymous_proxy': 0,
-                'is_us_military': 1,
+                'is_anonymous': True,
+                'is_anonymous_proxy': True,
+                'is_anonymous_vpn': True,
+                'is_hosting_provider': True,
+                'is_public_proxy': True,
+                'is_satellite_provider': True,
+                'is_tor_exit_node': True,
                 'isp': 'Comcast',
                 'network_speed': 'cable/DSL',
                 'organization': 'Blorg',
@@ -169,6 +174,14 @@
                          eval(repr(model.location)),
                          "Location repr can be eval'd")
 
+        self.assertTrue(model.traits.is_anonymous)
+        self.assertTrue(model.traits.is_anonymous_proxy)
+        self.assertTrue(model.traits.is_anonymous_vpn)
+        self.assertTrue(model.traits.is_hosting_provider)
+        self.assertTrue(model.traits.is_public_proxy)
+        self.assertTrue(model.traits.is_satellite_provider)
+        self.assertTrue(model.traits.is_tor_exit_node)
+
     def test_insights_min(self):
         model = geoip2.models.Insights({'traits': {'ip_address': '5.6.7.8'}})
         self.assertEqual(


Reply via email to