Commit 43d5b014 by William Tisäter

Remove gzip notes from documentation

parent 27935f79
...@@ -123,7 +123,7 @@ ...@@ -123,7 +123,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -256,7 +256,7 @@ page was last updated. </p> ...@@ -256,7 +256,7 @@ page was last updated. </p>
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -459,7 +459,7 @@ ...@@ -459,7 +459,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
</b></center><br /> </b></center><br />
<h1 class="epydoc">Module Hierarchy</h1> <h1 class="epydoc">Module Hierarchy</h1>
<ul class="nomargin-top"> <ul class="nomargin-top">
<li> <strong class="uidlink"><a href="pygeoip-module.html">pygeoip</a></strong>: <em class="summary">Pure Python GeoIP API.</em> <li> <strong class="uidlink"><a href="pygeoip-module.html">pygeoip</a></strong>: <em class="summary">Pure Python GeoIP API</em>
<ul> <ul>
<li> <strong class="uidlink"><a href="pygeoip.const-module.html">pygeoip.const</a></strong>: <em class="summary">Constants needed for parsing binary GeoIP databases.</em> </li> <li> <strong class="uidlink"><a href="pygeoip.const-module.html">pygeoip.const</a></strong>: <em class="summary">Constants needed for parsing binary GeoIP databases.</em> </li>
<li> <strong class="uidlink"><a href="pygeoip.timezone-module.html">pygeoip.timezone</a></strong> </li> <li> <strong class="uidlink"><a href="pygeoip.timezone-module.html">pygeoip.timezone</a></strong> </li>
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -60,11 +60,11 @@ ...@@ -60,11 +60,11 @@
</table> </table>
<!-- ==================== PACKAGE DESCRIPTION ==================== --> <!-- ==================== PACKAGE DESCRIPTION ==================== -->
<h1 class="epydoc">Package pygeoip</h1><p class="nomargin-top"><span class="codelink"><a href="pygeoip-pysrc.html">source&nbsp;code</a></span></p> <h1 class="epydoc">Package pygeoip</h1><p class="nomargin-top"><span class="codelink"><a href="pygeoip-pysrc.html">source&nbsp;code</a></span></p>
<p>Pure Python GeoIP API. The API is based off of <a <p>Pure Python GeoIP API</p>
href="http://www.maxmind.com/app/python" target="_top">MaxMind's C-based <p>The API is based on <a href="http://www.maxmind.com/app/python"
Python API</a>, but the code itself is based on the <a target="_top">MaxMind's C-based Python API</a>, but the code itself is
href="http://pear.php.net/package/Net_GeoIP/" target="_top">pure PHP5 based on the <a href="http://pear.php.net/package/Net_GeoIP/"
API</a> by Jim Winstead and Hans Lellelid.</p> target="_top">pure PHP5 API</a> by Jim Winstead and Hans Lellelid.</p>
<p>It is mostly a drop-in replacement, except the <code>new</code> and <p>It is mostly a drop-in replacement, except the <code>new</code> and
<code>open</code> methods are gone. You should instantiate the <a <code>open</code> methods are gone. You should instantiate the <a
href="pygeoip.GeoIP-class.html" class="link">GeoIP</a> class href="pygeoip.GeoIP-class.html" class="link">GeoIP</a> class
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -533,8 +533,7 @@ object --+ ...@@ -533,8 +533,7 @@ object --+
<dl class="fields"> <dl class="fields">
<dt>Parameters:</dt> <dt>Parameters:</dt>
<dd><ul class="nomargin-top"> <dd><ul class="nomargin-top">
<li><strong class="pname"><code>filename</code></strong> (str) - Path to a geoip database. If MEMORY_CACHE is used, the file can <li><strong class="pname"><code>filename</code></strong> (str) - Path to a geoip database.</li>
be gzipped.</li>
<li><strong class="pname"><code>flags</code></strong> (int) - Flags that affect how the database is processed. Currently <li><strong class="pname"><code>flags</code></strong> (int) - Flags that affect how the database is processed. Currently
supported flags are STANDARD (the default), MEMORY_CACHE (preload supported flags are STANDARD (the default), MEMORY_CACHE (preload
the whole file into memory) and MMAP_CACHE (access the file via the whole file into memory) and MMAP_CACHE (access the file via
...@@ -1066,7 +1065,7 @@ object --+ ...@@ -1066,7 +1065,7 @@ object --+
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -167,7 +167,7 @@ object --+ ...@@ -167,7 +167,7 @@ object --+
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -177,7 +177,7 @@ exceptions.BaseException --+ ...@@ -177,7 +177,7 @@ exceptions.BaseException --+
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -337,7 +337,7 @@ object --+ ...@@ -337,7 +337,7 @@ object --+
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -254,6 +254,13 @@ ...@@ -254,6 +254,13 @@
<td width="15%" align="right" valign="top" class="summary"> <td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span> <span class="summary-type">&nbsp;</span>
</td><td class="summary"> </td><td class="summary">
<a name="COUNTRY_EDITION_V6"></a><span class="summary-name">COUNTRY_EDITION_V6</span> = <code title="12">12</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="REGION_EDITION_REV0"></a><span class="summary-name">REGION_EDITION_REV0</span> = <code title="7">7</code> <a name="REGION_EDITION_REV0"></a><span class="summary-name">REGION_EDITION_REV0</span> = <code title="7">7</code>
</td> </td>
</tr> </tr>
...@@ -317,13 +324,6 @@ ...@@ -317,13 +324,6 @@
<td width="15%" align="right" valign="top" class="summary"> <td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span> <span class="summary-type">&nbsp;</span>
</td><td class="summary"> </td><td class="summary">
<a name="COUNTRY_EDITION_V6"></a><span class="summary-name">COUNTRY_EDITION_V6</span> = <code title="12">12</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="IPV6_EDITIONS"></a><span class="summary-name">IPV6_EDITIONS</span> = <code title="(12)"><code class="variable-group">(</code>12<code class="variable-group">)</code></code> <a name="IPV6_EDITIONS"></a><span class="summary-name">IPV6_EDITIONS</span> = <code title="(12)"><code class="variable-group">(</code>12<code class="variable-group">)</code></code>
</td> </td>
</tr> </tr>
...@@ -580,7 +580,7 @@ ...@@ -580,7 +580,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -814,7 +814,7 @@ expandto(location.href); ...@@ -814,7 +814,7 @@ expandto(location.href);
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:39 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -298,7 +298,7 @@ ...@@ -298,7 +298,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -61,79 +61,81 @@ ...@@ -61,79 +61,81 @@
</table> </table>
<h1 class="epydoc">Source Code for <a href="pygeoip.util-module.html">Module pygeoip.util</a></h1> <h1 class="epydoc">Source Code for <a href="pygeoip.util-module.html">Module pygeoip.util</a></h1>
<pre class="py-src"> <pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-docstring">Misc. utility functions. It is part of the pygeoip package.</tt> </tt> <a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">Misc. utility functions. It is part of the pygeoip package.</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring">@author: Jennifer Ennis &lt;zaylea at gmail dot com&gt;</tt> </tt> <a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring">@author: Jennifer Ennis &lt;zaylea at gmail dot com&gt;</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">@license:</tt> </tt> <a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring">Copyright(C) 2004 MaxMind LLC</tt> </tt> <a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring">@license:</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring">Copyright(C) 2004 MaxMind LLC</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring">This program is free software: you can redistribute it and/or modify</tt> </tt> <a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-docstring">it under the terms of the GNU Lesser General Public License as published by</tt> </tt> <a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-docstring">This program is free software: you can redistribute it and/or modify</tt> </tt>
<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-docstring">the Free Software Foundation, either version 3 of the License, or</tt> </tt> <a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-docstring">it under the terms of the GNU Lesser General Public License as published by</tt> </tt>
<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-docstring">(at your option) any later version.</tt> </tt> <a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-docstring">the Free Software Foundation, either version 3 of the License, or</tt> </tt>
<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-docstring">(at your option) any later version.</tt> </tt>
<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-docstring">This program is distributed in the hope that it will be useful,</tt> </tt> <a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-docstring">but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt> <a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-docstring">This program is distributed in the hope that it will be useful,</tt> </tt>
<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-docstring">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt> <a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-docstring">but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-docstring">GNU General Public License for more details.</tt> </tt> <a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-docstring">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-docstring">GNU General Public License for more details.</tt> </tt>
<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring">You should have received a copy of the GNU Lesser General Public License</tt> </tt> <a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-docstring">along with this program. If not, see &lt;http://www.gnu.org/licenses/lgpl.txt&gt;.</tt> </tt> <a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-docstring">You should have received a copy of the GNU Lesser General Public License</tt> </tt>
<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">along with this program. If not, see &lt;http://www.gnu.org/licenses/lgpl.txt&gt;.</tt> </tt>
<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> </tt> <a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">struct</tt> </tt> <a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> </tt>
<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt> <a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">struct</tt> </tt>
<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">array</tt> <tt class="py-keyword">import</tt> <tt class="py-name">array</tt> </tt> <a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> </tt> <a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">array</tt> <tt class="py-keyword">import</tt> <tt class="py-name">array</tt> </tt>
<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package pygeoip=pygeoip-module.html"><a title="pygeoip" class="py-name" href="#" onclick="return doclink('link-0', 'pygeoip', 'link-0');">pygeoip</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module pygeoip.const=pygeoip.const-module.html"><a title="pygeoip.const" class="py-name" href="#" onclick="return doclink('link-1', 'const', 'link-1');">const</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Variable pygeoip.const.PY3=pygeoip.const-module.html#PY3"><a title="pygeoip.const.PY3" class="py-name" href="#" onclick="return doclink('link-2', 'PY3', 'link-2');">PY3</a></tt> </tt> <a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt>
<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> </tt> <a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package pygeoip=pygeoip-module.html"><a title="pygeoip" class="py-name" href="#" onclick="return doclink('link-0', 'pygeoip', 'link-0');">pygeoip</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module pygeoip.const=pygeoip.const-module.html"><a title="pygeoip.const" class="py-name" href="#" onclick="return doclink('link-1', 'const', 'link-1');">const</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Variable pygeoip.const.PY3=pygeoip.const-module.html#PY3"><a title="pygeoip.const.PY3" class="py-name" href="#" onclick="return doclink('link-2', 'PY3', 'link-2');">PY3</a></tt> </tt>
<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> </tt> <a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> </tt>
<a name="ip2long"></a><div id="ip2long-def"><a name="L30"></a><tt class="py-lineno">30</tt> <a class="py-toggle" href="#" id="ip2long-toggle" onclick="return toggle('ip2long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pygeoip.util-module.html#ip2long">ip2long</a><tt class="py-op">(</tt><tt class="py-param">ip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> </tt>
</div><div id="ip2long-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ip2long-expanded"><a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="ip2long"></a><div id="ip2long-def"><a name="L31"></a><tt class="py-lineno">31</tt> <a class="py-toggle" href="#" id="ip2long-toggle" onclick="return toggle('ip2long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pygeoip.util-module.html#ip2long">ip2long</a><tt class="py-op">(</tt><tt class="py-param">ip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"><tt class="py-docstring"> Wrapper function for IPv4 and IPv6 converters</tt> </tt> </div><div id="ip2long-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ip2long-expanded"><a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"><tt class="py-docstring"> @param ip: IPv4 or IPv6 address</tt> </tt> <a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"><tt class="py-docstring"> Wrapper function for IPv4 and IPv6 converters</tt> </tt>
<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"><tt class="py-docstring"> @type ip: str</tt> </tt> <a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"><tt class="py-docstring"> @param ip: IPv4 or IPv6 address</tt> </tt>
<a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"><tt class="py-docstring"> @type ip: str</tt> </tt>
<a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ip</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-3" class="py-name" targets="Function pygeoip.util.ip2long_v6()=pygeoip.util-module.html#ip2long_v6"><a title="pygeoip.util.ip2long_v6" class="py-name" href="#" onclick="return doclink('link-3', 'ip2long_v6', 'link-3');">ip2long_v6</a></tt><tt class="py-op">(</tt><tt class="py-name">ip</tt><tt class="py-op">)</tt> </tt> <a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ip</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-3" class="py-name" targets="Function pygeoip.util.ip2long_v6()=pygeoip.util-module.html#ip2long_v6"><a title="pygeoip.util.ip2long_v6" class="py-name" href="#" onclick="return doclink('link-3', 'ip2long_v6', 'link-3');">ip2long_v6</a></tt><tt class="py-op">(</tt><tt class="py-name">ip</tt><tt class="py-op">)</tt> </tt>
<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-4" class="py-name" targets="Function pygeoip.util.ip2long_v4()=pygeoip.util-module.html#ip2long_v4"><a title="pygeoip.util.ip2long_v4" class="py-name" href="#" onclick="return doclink('link-4', 'ip2long_v4', 'link-4');">ip2long_v4</a></tt><tt class="py-op">(</tt><tt class="py-name">ip</tt><tt class="py-op">)</tt> </tt> <a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
</div><a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> </tt> <a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-4" class="py-name" targets="Function pygeoip.util.ip2long_v4()=pygeoip.util-module.html#ip2long_v4"><a title="pygeoip.util.ip2long_v4" class="py-name" href="#" onclick="return doclink('link-4', 'ip2long_v4', 'link-4');">ip2long_v4</a></tt><tt class="py-op">(</tt><tt class="py-name">ip</tt><tt class="py-op">)</tt> </tt>
<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"> </tt> </div><a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"> </tt>
<a name="ip2long_v4"></a><div id="ip2long_v4-def"><a name="L42"></a><tt class="py-lineno">42</tt> <a class="py-toggle" href="#" id="ip2long_v4-toggle" onclick="return toggle('ip2long_v4');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pygeoip.util-module.html#ip2long_v4">ip2long_v4</a><tt class="py-op">(</tt><tt class="py-param">ip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> </tt>
</div><div id="ip2long_v4-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ip2long_v4-expanded"><a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="ip2long_v4"></a><div id="ip2long_v4-def"><a name="L43"></a><tt class="py-lineno">43</tt> <a class="py-toggle" href="#" id="ip2long_v4-toggle" onclick="return toggle('ip2long_v4');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pygeoip.util-module.html#ip2long_v4">ip2long_v4</a><tt class="py-op">(</tt><tt class="py-param">ip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"><tt class="py-docstring"> Convert a IPv4 address into a 32-bit integer.</tt> </tt> </div><div id="ip2long_v4-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ip2long_v4-expanded"><a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"><tt class="py-docstring"> Convert a IPv4 address into a 32-bit integer.</tt> </tt>
<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"><tt class="py-docstring"> @param ip: quad-dotted IPv4 address</tt> </tt> <a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"><tt class="py-docstring"> @type ip: str</tt> </tt> <a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"><tt class="py-docstring"> @param ip: quad-dotted IPv4 address</tt> </tt>
<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"><tt class="py-docstring"> @return: network byte order 32-bit integer</tt> </tt> <a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"><tt class="py-docstring"> @type ip: str</tt> </tt>
<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> <a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"><tt class="py-docstring"> @return: network byte order 32-bit integer</tt> </tt>
<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt>
<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> <tt class="py-name">ip_array</tt> <tt class="py-op">=</tt> <tt class="py-name">ip</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt> <a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-5" class="py-name"><a title="pygeoip.const.PY3" class="py-name" href="#" onclick="return doclink('link-5', 'PY3', 'link-2');">PY3</a></tt><tt class="py-op">:</tt> </tt> <a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> <tt class="py-name">ip_array</tt> <tt class="py-op">=</tt> <tt class="py-name">ip</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"> <tt class="py-comment"># int and long are unified in py3</tt> </tt> <a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-5" class="py-name"><a title="pygeoip.const.PY3" class="py-name" href="#" onclick="return doclink('link-5', 'PY3', 'link-2');">PY3</a></tt><tt class="py-op">:</tt> </tt>
<a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> <tt class="py-name">ip_long</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">16777216</tt> <tt class="py-op">+</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">65536</tt> <tt class="py-op">+</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">256</tt> <tt class="py-op">+</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> <tt class="py-comment"># int and long are unified in py3</tt> </tt>
<a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">16777216</tt> <tt class="py-op">+</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">65536</tt> <tt class="py-op">+</tt> \ </tt>
<a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> <tt class="py-name">ip_long</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">16777216</tt> <tt class="py-op">+</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">65536</tt> <tt class="py-op">+</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">256</tt> <tt class="py-op">+</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">256</tt> <tt class="py-op">+</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ip_long</tt> </tt> <a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
</div><a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"> </tt> <a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">16777216</tt> <tt class="py-op">+</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">65536</tt> <tt class="py-op">+</tt> \ </tt>
<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> </tt> <a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">256</tt> <tt class="py-op">+</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">ip_array</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="ip2long_v6"></a><div id="ip2long_v6-def"><a name="L60"></a><tt class="py-lineno">60</tt> <a class="py-toggle" href="#" id="ip2long_v6-toggle" onclick="return toggle('ip2long_v6');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pygeoip.util-module.html#ip2long_v6">ip2long_v6</a><tt class="py-op">(</tt><tt class="py-param">ip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> </tt>
</div><div id="ip2long_v6-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ip2long_v6-expanded"><a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"> </tt>
<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"><tt class="py-docstring"> Convert a IPv6 address into long.</tt> </tt> <a name="ip2long_v6"></a><div id="ip2long_v6-def"><a name="L62"></a><tt class="py-lineno">62</tt> <a class="py-toggle" href="#" id="ip2long_v6-toggle" onclick="return toggle('ip2long_v6');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pygeoip.util-module.html#ip2long_v6">ip2long_v6</a><tt class="py-op">(</tt><tt class="py-param">ip</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> </div><div id="ip2long_v6-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ip2long_v6-expanded"><a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"><tt class="py-docstring"> @param ip: IPv6 address</tt> </tt> <a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"><tt class="py-docstring"> Convert a IPv6 address into long.</tt> </tt>
<a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"><tt class="py-docstring"> @type ip: str</tt> </tt> <a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"><tt class="py-docstring"> @return: network byte order long</tt> </tt> <a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"><tt class="py-docstring"> @param ip: IPv6 address</tt> </tt>
<a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: long</tt> </tt> <a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"><tt class="py-docstring"> @type ip: str</tt> </tt>
<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"><tt class="py-docstring"> @return: network byte order long</tt> </tt>
<a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"> <tt class="py-name">ipbyte</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">inet_pton</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET6</tt><tt class="py-op">,</tt> <tt class="py-name">ip</tt><tt class="py-op">)</tt> </tt> <a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: long</tt> </tt>
<a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"> <tt class="py-name">ipnum</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">'L'</tt><tt class="py-op">,</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'!4L'</tt><tt class="py-op">,</tt> <tt class="py-name">ipbyte</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"> <tt class="py-name">max_index</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ipnum</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt> <a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"> <tt class="py-name">ipbyte</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">inet_pton</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET6</tt><tt class="py-op">,</tt> <tt class="py-name">ip</tt><tt class="py-op">)</tt> </tt>
<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">ipnum</tt><tt class="py-op">[</tt><tt class="py-name">max_index</tt> <tt class="py-op">-</tt> <tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt> <tt class="py-op">*</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ipnum</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> <tt class="py-name">ipnum</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">'L'</tt><tt class="py-op">,</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'!4L'</tt><tt class="py-op">,</tt> <tt class="py-name">ipbyte</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> </tt><script type="text/javascript"> <a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> <tt class="py-name">max_index</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ipnum</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-name">ipnum</tt><tt class="py-op">[</tt><tt class="py-name">max_index</tt> <tt class="py-op">-</tt> <tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt> <tt class="py-op">*</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ipnum</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!-- <!--
expandto(location.href); expandto(location.href);
// --> // -->
...@@ -171,7 +173,7 @@ expandto(location.href); ...@@ -171,7 +173,7 @@ expandto(location.href);
<table border="0" cellpadding="0" cellspacing="0" width="100%%"> <table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr> <tr>
<td align="left" class="footer"> <td align="left" class="footer">
Generated by Epydoc 3.0.1 on Fri Sep 28 22:42:00 2012 Generated by Epydoc 3.0.1 on Sat Sep 29 02:57:38 2012
</td> </td>
<td align="right" class="footer"> <td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net" <a target="mainFrame" href="http://epydoc.sourceforge.net"
......
...@@ -36,7 +36,6 @@ import os ...@@ -36,7 +36,6 @@ import os
import math import math
import socket import socket
import mmap import mmap
import gzip
import codecs import codecs
from threading import Lock from threading import Lock
...@@ -91,8 +90,7 @@ class GeoIP(GeoIPBase): ...@@ -91,8 +90,7 @@ class GeoIP(GeoIPBase):
""" """
Initialize the class. Initialize the class.
@param filename: Path to a geoip database. If MEMORY_CACHE is used, @param filename: Path to a geoip database.
the file can be gzipped.
@type filename: str @type filename: str
@param flags: Flags that affect how the database is processed. @param flags: Flags that affect how the database is processed.
Currently supported flags are STANDARD (the default), Currently supported flags are STANDARD (the default),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment