mirror of
https://github.com/dh1tw/pyhamtools.git
synced 2026-04-07 23:43:59 +00:00
updated tests & docstrings of LookupLib
This commit is contained in:
parent
644306bea0
commit
4e4e94091d
19 changed files with 329 additions and 137 deletions
107
docs/build/html/lookuplib.html
vendored
107
docs/build/html/lookuplib.html
vendored
|
|
@ -56,16 +56,17 @@
|
|||
</div>
|
||||
<span class="target" id="module-pyhamtools.lookuplib"></span><dl class="class">
|
||||
<dt id="pyhamtools.lookuplib.LookupLib">
|
||||
<em class="property">class </em><tt class="descclassname">pyhamtools.lookuplib.</tt><tt class="descname">LookupLib</tt><big>(</big><em>lookuptype='clublogxml'</em>, <em>apikey=None</em>, <em>filename=None</em>, <em>logger=None</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>This class provides a homogeneous interface to three different Amateur Radio Callsign lookup sources:</p>
|
||||
<em class="property">class </em><tt class="descclassname">pyhamtools.lookuplib.</tt><tt class="descname">LookupLib</tt><big>(</big><em>lookuptype='countryfile'</em>, <em>apikey=None</em>, <em>filename=None</em>, <em>logger=None</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>This class is a wrapper for the following three Amateur Radio databases:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>Clublog.org (daily updated XML File)</li>
|
||||
<li>Clublog.org (HTTPS lookup)</li>
|
||||
<li>Country-files.com (infrequently updated PLIST File)</li>
|
||||
</ol>
|
||||
<p>The class provides getters to access the data in a structured way. Even the interface is the same
|
||||
for all lookup sources, the returning data can be different. The documentation of the various
|
||||
methods provide more detail.</p>
|
||||
<p>It’s aim is to provide a homogeneous interface to different data sources.</p>
|
||||
<p>Typically it is injected as a dependency in the Callinfo class, but can also be used directly.</p>
|
||||
<p>Even the interface is the same for all lookup sources, the returning data can be different.
|
||||
The documentation of the various methods provide more detail.</p>
|
||||
<p>By default, LookupLib requires an Internet connection to download the libraries or perform the
|
||||
lookup against the Clublog API.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
|
|
@ -84,7 +85,7 @@ lookup against the Clublog API.</p>
|
|||
</table>
|
||||
<dl class="method">
|
||||
<dt id="pyhamtools.lookuplib.LookupLib.is_invalid_operation">
|
||||
<tt class="descname">is_invalid_operation</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>24</em>, <em>15</em>, <em>46</em>, <em>11</em>, <em>956076</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.is_invalid_operation" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">is_invalid_operation</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>25</em>, <em>21</em>, <em>44</em>, <em>34</em>, <em>169942</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.is_invalid_operation" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns True if an operations is known as invalid</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
|
|
@ -103,7 +104,7 @@ lookup against the Clublog API.</p>
|
|||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">NoResult</span></tt> –
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">KeyError</span></tt> –
|
||||
No matching callsign found</li>
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">APIKeyMissingError</span></tt> –
|
||||
API Key for Clublog missing or incorrect</li>
|
||||
|
|
@ -112,6 +113,22 @@ API Key for Clublog missing or incorrect</li>
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="rubric">Example</p>
|
||||
<p>The following code checks the Clublog XML database if the operation is valid for two dates.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pyhamtools</span> <span class="kn">import</span> <span class="n">LookupLib</span>
|
||||
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
|
||||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">pytz</span>
|
||||
<span class="gp">>>> </span><span class="n">my_lookuplib</span> <span class="o">=</span> <span class="n">LookupLib</span><span class="p">(</span><span class="n">lookuptype</span><span class="o">=</span><span class="s">"clublogxml"</span><span class="p">,</span> <span class="n">apikey</span><span class="o">=</span><span class="s">"myapikey"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="k">print</span> <span class="n">my_lookuplib</span><span class="o">.</span><span class="n">is_invalid_operation</span><span class="p">(</span><span class="s">"5W1CFN"</span><span class="p">)</span>
|
||||
<span class="go">True</span>
|
||||
<span class="gp">>>> </span><span class="k">try</span><span class="p">:</span>
|
||||
<span class="gp">>>> </span> <span class="n">timestamp</span> <span class="o">=</span> <span class="n">datetime</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="mi">2012</span><span class="p">,</span> <span class="n">month</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">day</span><span class="o">=</span><span class="mi">31</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">pytz</span><span class="o">.</span><span class="n">UTC</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span> <span class="n">my_lookuplib</span><span class="o">.</span><span class="n">is_invalid_operation</span><span class="p">(</span><span class="s">"5W1CFN"</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
||||
<span class="gp">>>> </span> <span class="k">print</span> <span class="s">"Seems to be invalid operation before 31.1.2012"</span>
|
||||
<span class="go">Seems to be an invalid operation before 31.1.2012</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>This method is available for</p>
|
||||
|
|
@ -123,7 +140,7 @@ API Key for Clublog missing or incorrect</li>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="pyhamtools.lookuplib.LookupLib.lookup_callsign">
|
||||
<tt class="descname">lookup_callsign</tt><big>(</big><em>callsign=None</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>24</em>, <em>15</em>, <em>46</em>, <em>11</em>, <em>956058</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.lookup_callsign" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">lookup_callsign</tt><big>(</big><em>callsign=None</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>25</em>, <em>21</em>, <em>44</em>, <em>34</em>, <em>169924</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.lookup_callsign" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns lookup data if an exception exists for a callsign</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
|
|
@ -142,7 +159,7 @@ API Key for Clublog missing or incorrect</li>
|
|||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">NoResult</span></tt> –
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">KeyError</span></tt> –
|
||||
No matching callsign found</li>
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">APIKeyMissingError</span></tt> –
|
||||
API Key for Clublog missing or incorrect</li>
|
||||
|
|
@ -151,6 +168,24 @@ API Key for Clublog missing or incorrect</li>
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="rubric">Example</p>
|
||||
<p>The following code queries the the online Clublog API for the callsign “VK9XO” on a specific date.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pyhamtools</span> <span class="kn">import</span> <span class="n">LookupLib</span>
|
||||
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
|
||||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">pytz</span>
|
||||
<span class="gp">>>> </span><span class="n">my_lookuplib</span> <span class="o">=</span> <span class="n">LookupLib</span><span class="p">(</span><span class="n">lookuptype</span><span class="o">=</span><span class="s">"clublogapi"</span><span class="p">,</span> <span class="n">apikey</span><span class="o">=</span><span class="s">"myapikey"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">timestamp</span> <span class="o">=</span> <span class="n">datetime</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="mi">1962</span><span class="p">,</span> <span class="n">month</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">day</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">tzinfo</span><span class="o">=</span><span class="n">pytz</span><span class="o">.</span><span class="n">UTC</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="k">print</span> <span class="n">my_lookuplib</span><span class="o">.</span><span class="n">lookup_callsign</span><span class="p">(</span><span class="s">"VK9XO"</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">)</span>
|
||||
<span class="go">{</span>
|
||||
<span class="go"> 'country': 'CHRISTMAS ISLAND',</span>
|
||||
<span class="go"> 'longitude': -105.7,</span>
|
||||
<span class="go"> 'cqz': 29,</span>
|
||||
<span class="go"> 'adif': 35,</span>
|
||||
<span class="go"> 'latitude': -10.5,</span>
|
||||
<span class="go"> 'continent': 'OC'</span>
|
||||
<span class="go">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>This method is available for</p>
|
||||
|
|
@ -176,11 +211,28 @@ API Key for Clublog missing or incorrect</li>
|
|||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">dict</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><tt class="xref py py-exc docutils literal"><span class="pre">NoResult</span></tt> –
|
||||
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><tt class="xref py py-exc docutils literal"><span class="pre">KeyError</span></tt> –
|
||||
No matching entity found</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="rubric">Example</p>
|
||||
<p>The following code queries the the Clublog XML database for the ADIF entity Turkmenistan, which has
|
||||
the id 273.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pyhamtools</span> <span class="kn">import</span> <span class="n">LookupLib</span>
|
||||
<span class="gp">>>> </span><span class="n">my_lookuplib</span> <span class="o">=</span> <span class="n">LookupLib</span><span class="p">(</span><span class="n">lookuptype</span><span class="o">=</span><span class="s">"clublogapi"</span><span class="p">,</span> <span class="n">apikey</span><span class="o">=</span><span class="s">"myapikey"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="k">print</span> <span class="n">my_lookuplib</span><span class="o">.</span><span class="n">lookup_entity</span><span class="p">(</span><span class="mi">273</span><span class="p">)</span>
|
||||
<span class="go">{</span>
|
||||
<span class="go"> 'deleted': False,</span>
|
||||
<span class="go"> 'country': 'TURKMENISTAN',</span>
|
||||
<span class="go"> 'longitude': -58.4,</span>
|
||||
<span class="go"> 'cqz': 17,</span>
|
||||
<span class="go"> 'prefix': 'EZ',</span>
|
||||
<span class="go"> 'latitude': 38.0,</span>
|
||||
<span class="go"> 'continent': 'AS'</span>
|
||||
<span class="go">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>This method is available for the following lookup type</p>
|
||||
|
|
@ -192,7 +244,7 @@ No matching entity found</td>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="pyhamtools.lookuplib.LookupLib.lookup_prefix">
|
||||
<tt class="descname">lookup_prefix</tt><big>(</big><em>prefix</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>24</em>, <em>15</em>, <em>46</em>, <em>11</em>, <em>956058</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.lookup_prefix" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">lookup_prefix</tt><big>(</big><em>prefix</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>25</em>, <em>21</em>, <em>44</em>, <em>34</em>, <em>169924</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.lookup_prefix" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns lookup data of a Prefix</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
|
|
@ -211,7 +263,7 @@ No matching entity found</td>
|
|||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">NoResult</span></tt> –
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">KeyError</span></tt> –
|
||||
No matching Prefix found</li>
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">APIKeyMissingError</span></tt> –
|
||||
API Key for Clublog missing or incorrect</li>
|
||||
|
|
@ -220,6 +272,23 @@ API Key for Clublog missing or incorrect</li>
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="rubric">Example</p>
|
||||
<p>The following code shows how to obtain the information for the prefix “DH” from the countryfile.com
|
||||
database (default database).</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pyhamtools</span> <span class="kn">import</span> <span class="n">LookupLib</span>
|
||||
<span class="gp">>>> </span><span class="n">myLookupLib</span> <span class="o">=</span> <span class="n">LookupLib</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="k">print</span> <span class="n">myLookupLib</span><span class="o">.</span><span class="n">lookup_prefix</span><span class="p">(</span><span class="s">"DH"</span><span class="p">)</span>
|
||||
<span class="go">{</span>
|
||||
<span class="go"> 'adif': 230,</span>
|
||||
<span class="go"> 'country': 'Fed. Rep. of Germany',</span>
|
||||
<span class="go"> 'longitude': -10.0,</span>
|
||||
<span class="go"> 'cqz': 14,</span>
|
||||
<span class="go"> 'ituz': 28,</span>
|
||||
<span class="go"> 'latitude': 51.0,</span>
|
||||
<span class="go"> 'continent': 'EU'</span>
|
||||
<span class="go">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>This method is available for</p>
|
||||
|
|
@ -232,7 +301,7 @@ API Key for Clublog missing or incorrect</li>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="pyhamtools.lookuplib.LookupLib.lookup_zone_exception">
|
||||
<tt class="descname">lookup_zone_exception</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>24</em>, <em>15</em>, <em>46</em>, <em>11</em>, <em>956082</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.lookup_zone_exception" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">lookup_zone_exception</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>4</em>, <em>25</em>, <em>21</em>, <em>44</em>, <em>34</em>, <em>169948</em>, <em>tzinfo=<UTC>)</em><big>)</big><a class="headerlink" href="#pyhamtools.lookuplib.LookupLib.lookup_zone_exception" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a CQ Zone if an exception exists for the given callsign</p>
|
||||
<p>Args:
|
||||
callsign (string): Amateur radio callsign
|
||||
|
|
@ -248,7 +317,7 @@ timestamp (datetime, optional): datetime in UTC (tzinfo=pytz.UTC)</p>
|
|||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Raises:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">NoResult</span></tt> –
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">KeyError</span></tt> –
|
||||
No matching callsign found</li>
|
||||
<li><tt class="xref py py-exc docutils literal"><span class="pre">APIKeyMissingError</span></tt> –
|
||||
API Key for Clublog missing or incorrect</li>
|
||||
|
|
@ -257,6 +326,16 @@ API Key for Clublog missing or incorrect</li>
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="rubric">Example</p>
|
||||
<p>The following code checks the Clublog XML database if a CQ Zone exception exists for the callsign DP0GVN.</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pyhamtools</span> <span class="kn">import</span> <span class="n">LookupLib</span>
|
||||
<span class="gp">>>> </span><span class="n">my_lookuplib</span> <span class="o">=</span> <span class="n">LookupLib</span><span class="p">(</span><span class="n">lookuptype</span><span class="o">=</span><span class="s">"clublogxml"</span><span class="p">,</span> <span class="n">apikey</span><span class="o">=</span><span class="s">"myapikey"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="k">print</span> <span class="n">my_lookuplib</span><span class="o">.</span><span class="n">lookup_zone_exception</span><span class="p">(</span><span class="s">"DP0GVN"</span><span class="p">)</span>
|
||||
<span class="go">38</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The prefix “DP” It is assigned to Germany, but the station is located in Antarctica, and therefore
|
||||
in CQ Zone 38</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>This method is available for</p>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue