moved freq_to_band to pyhamtools.frequency; short callsigns in other countries (e.g. C6A/9H5A) are now correctly decoded; improved documentation

This commit is contained in:
dh1tw 2014-09-27 01:48:59 +02:00
parent cd00dc6ab9
commit 87a705c5c4
33 changed files with 493 additions and 253 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -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: 600f158a9e0f0243044c536b465c44c7
config: 28550054b902e31426622d239c737bb6
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Callinfo &mdash; pyhamtools 0.4.0 documentation</title>
<title>Callinfo &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -23,9 +23,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="next" title="LookupLib" href="LookupLib.html" />
<link rel="prev" title="locator" href="locator.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
</head>
<body>
<div class="related">
@ -37,13 +35,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="LookupLib.html" title="LookupLib"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="locator.html" title="locator"
accesskey="P">previous</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -79,7 +71,7 @@ An instance of <tt class="xref py py-class docutils literal"><span class="pre">L
</table>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_adif_id">
<tt class="descname">get_adif_id</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_adif_id" title="Permalink to this definition"></a></dt>
<tt class="descname">get_adif_id</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_adif_id" title="Permalink to this definition"></a></dt>
<dd><p>Returns ADIF id of a callsign&#8217;s country</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -107,7 +99,7 @@ No Country found for callsign</p>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_all">
<tt class="descname">get_all</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_all" title="Permalink to this definition"></a></dt>
<tt class="descname">get_all</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_all" title="Permalink to this definition"></a></dt>
<dd><p>Lookup a callsign and return all data available from the underlying database</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -160,7 +152,7 @@ would be missing with Clublog (API or XML) <tt class="xref py py-class docutils
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_continent">
<tt class="descname">get_continent</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_continent" title="Permalink to this definition"></a></dt>
<tt class="descname">get_continent</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_continent" title="Permalink to this definition"></a></dt>
<dd><p>Returns the continent Identifier of a callsign</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -201,7 +193,7 @@ No Continent found for callsign</p>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_country_name">
<tt class="descname">get_country_name</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_country_name" title="Permalink to this definition"></a></dt>
<tt class="descname">get_country_name</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_country_name" title="Permalink to this definition"></a></dt>
<dd><p>Returns the country name where the callsign is located</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -239,7 +231,7 @@ for countries. Example:</p>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_cqz">
<tt class="descname">get_cqz</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_cqz" title="Permalink to this definition"></a></dt>
<tt class="descname">get_cqz</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_cqz" title="Permalink to this definition"></a></dt>
<dd><p>Returns CQ Zone of a callsign</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -268,7 +260,7 @@ no CQ Zone found for callsign</p>
<dl class="staticmethod">
<dt id="pyhamtools.callinfo.Callinfo.get_homecall">
<em class="property">static </em><tt class="descname">get_homecall</tt><big>(</big><em>callsign</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_homecall" title="Permalink to this definition"></a></dt>
<dd><p>Strips off country prefixes (<strong>HC2/</strong> DH1TW) and activity suffixes (DH1TW <strong>/P</strong>).</p>
<dd><p>Strips off country prefixes (HC2/DH1TW) and activity suffixes (DH1TW/P).</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@ -297,7 +289,7 @@ No callsign found in string</td>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_ituz">
<tt class="descname">get_ituz</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_ituz" title="Permalink to this definition"></a></dt>
<tt class="descname">get_ituz</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_ituz" title="Permalink to this definition"></a></dt>
<dd><p>Returns ITU Zone of a callsign</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -329,7 +321,7 @@ No ITU Zone found for callsign</p>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.get_lat_long">
<tt class="descname">get_lat_long</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_lat_long" title="Permalink to this definition"></a></dt>
<tt class="descname">get_lat_long</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.get_lat_long" title="Permalink to this definition"></a></dt>
<dd><p>Returns Latitude and Longitude for a callsign</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -375,7 +367,7 @@ dedicated entry in the database exists.</p>
<dl class="method">
<dt id="pyhamtools.callinfo.Callinfo.is_valid_callsign">
<tt class="descname">is_valid_callsign</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>25</em>, <em>21</em>, <em>42</em>, <em>32</em>, <em>786909</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.is_valid_callsign" title="Permalink to this definition"></a></dt>
<tt class="descname">is_valid_callsign</tt><big>(</big><em>callsign</em>, <em>timestamp=datetime.datetime(2014</em>, <em>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>995737</em>, <em>tzinfo=&lt;UTC&gt;)</em><big>)</big><a class="headerlink" href="#pyhamtools.callinfo.Callinfo.is_valid_callsign" title="Permalink to this definition"></a></dt>
<dd><p>Checks if a callsign is valid</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -416,15 +408,9 @@ dedicated entry in the database exists.</p>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="locator.html"
title="previous chapter">locator</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="LookupLib.html"
title="next chapter">LookupLib</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/Callinfo.txt"
<li><a href="_sources/callinfo.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
@ -453,13 +439,7 @@ dedicated entry in the database exists.</p>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="LookupLib.html" title="LookupLib"
>next</a> |</li>
<li class="right" >
<a href="locator.html" title="locator"
>previous</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

View file

@ -12,34 +12,36 @@
:IRC: #hamtests on webirc.deltaxray.org
PyHamTools is a Python library which helps you creating Amateur Radio applications faster. It comes
with some modules and classes which are frequently needed, like locator based calculations (distance,
heading, etc) or parsing of Amateur Radio callsigns.
with some modules and classes which are frequently needed:
Currently, PyHamtools contains the following modules and classes:
- Locator based calculations (distance, heading, sunrise/sunset, Locator to Lat/Long conversion)
Modules
^^^^^^^
.. toctree::
:maxdepth: 2
- Checking frequencies against the IARU bandplan or
utils
locator
- Parsing Amateur Radio callsigns using Clublog.org_'s or AD1C's Country-Files.com_ database
Clases
^^^^^^
PyHamTools is used in production at the DXHeat.com DXCluster_, performing several thousand lookups and calculations per day.
.. _Clublog.org: https://secure.clublog.org/
.. _Country-Files.com: http://www.country-files.com/
.. _DXCluster: https://dxheat.com
PyHamTools Documentation
========================
Contents:
.. toctree::
:maxdepth: 2
Callinfo
LookupLib
reference
examples
changelog
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View file

@ -7,7 +7,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index &mdash; pyhamtools 0.4.0 documentation</title>
<title>Index &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -15,7 +15,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -24,7 +24,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
</head>
<body>
<div class="related">
@ -36,7 +36,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -61,33 +61,33 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="locator.html#pyhamtools.locator.calculate_distance">calculate_distance() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.calculate_distance">calculate_distance() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.calculate_distance">[1]</a>
</dt>
<dt><a href="locator.html#pyhamtools.locator.calculate_distance_longpath">calculate_distance_longpath() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.calculate_distance_longpath">calculate_distance_longpath() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.calculate_distance_longpath">[1]</a>
</dt>
<dt><a href="locator.html#pyhamtools.locator.calculate_heading">calculate_heading() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.calculate_heading">calculate_heading() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.calculate_heading">[1]</a>
</dt>
<dt><a href="locator.html#pyhamtools.locator.calculate_heading_longpath">calculate_heading_longpath() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.calculate_heading_longpath">calculate_heading_longpath() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.calculate_heading_longpath">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="locator.html#pyhamtools.locator.calculate_sunrise_sunset">calculate_sunrise_sunset() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.calculate_sunrise_sunset">calculate_sunrise_sunset() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.calculate_sunrise_sunset">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo">Callinfo (class in pyhamtools.callinfo)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo">Callinfo (class in pyhamtools.callinfo)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo">[1]</a>
</dt>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib.copy_data_in_redis">copy_data_in_redis() (pyhamtools.lookuplib.LookupLib method)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib.copy_data_in_redis">copy_data_in_redis() (pyhamtools.lookuplib.LookupLib method)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib.copy_data_in_redis">[1]</a>
</dt>
</dl></td>
@ -97,9 +97,15 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="utils.html#pyhamtools.utils.freq_to_band">freq_to_band() (in module pyhamtools.utils)</a>
<dt><a href="reference.html#pyhamtools.frequency.freq_to_band">freq_to_band() (in module pyhamtools.frequency)</a>
</dt>
<dd><dl>
<dt><a href="reference.html#pyhamtools.utils.freq_to_band">(in module pyhamtools.utils)</a>, <a href="utils.html#pyhamtools.utils.freq_to_band">[1]</a>, <a href="frequency.html#pyhamtools.utils.freq_to_band">[2]</a>
</dt>
</dl></dd>
</dl></td>
</tr></table>
@ -107,37 +113,37 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_adif_id">get_adif_id() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_adif_id">get_adif_id() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_adif_id">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_all">get_all() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_all">get_all() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_all">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_continent">get_continent() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_continent">get_continent() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_continent">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_country_name">get_country_name() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_country_name">get_country_name() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_country_name">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_cqz">get_cqz() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_cqz">get_cqz() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_cqz">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_homecall">get_homecall() (pyhamtools.callinfo.Callinfo static method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_homecall">get_homecall() (pyhamtools.callinfo.Callinfo static method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_homecall">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_ituz">get_ituz() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_ituz">get_ituz() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_ituz">[1]</a>
</dt>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.get_lat_long">get_lat_long() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.get_lat_long">get_lat_long() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.get_lat_long">[1]</a>
</dt>
</dl></td>
@ -147,13 +153,13 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib.is_invalid_operation">is_invalid_operation() (pyhamtools.lookuplib.LookupLib method)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib.is_invalid_operation">is_invalid_operation() (pyhamtools.lookuplib.LookupLib method)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib.is_invalid_operation">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="Callinfo.html#pyhamtools.callinfo.Callinfo.is_valid_callsign">is_valid_callsign() (pyhamtools.callinfo.Callinfo method)</a>
<dt><a href="reference.html#pyhamtools.callinfo.Callinfo.is_valid_callsign">is_valid_callsign() (pyhamtools.callinfo.Callinfo method)</a>, <a href="callinfo.html#pyhamtools.callinfo.Callinfo.is_valid_callsign">[1]</a>
</dt>
</dl></td>
@ -163,33 +169,33 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="locator.html#pyhamtools.locator.latlong_to_locator">latlong_to_locator() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.latlong_to_locator">latlong_to_locator() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.latlong_to_locator">[1]</a>
</dt>
<dt><a href="locator.html#pyhamtools.locator.locator_to_latlong">locator_to_latlong() (in module pyhamtools.locator)</a>
<dt><a href="reference.html#pyhamtools.locator.locator_to_latlong">locator_to_latlong() (in module pyhamtools.locator)</a>, <a href="locator.html#pyhamtools.locator.locator_to_latlong">[1]</a>
</dt>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_callsign">lookup_callsign() (pyhamtools.lookuplib.LookupLib method)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib.lookup_callsign">lookup_callsign() (pyhamtools.lookuplib.LookupLib method)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_callsign">[1]</a>
</dt>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_entity">lookup_entity() (pyhamtools.lookuplib.LookupLib method)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib.lookup_entity">lookup_entity() (pyhamtools.lookuplib.LookupLib method)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_entity">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_prefix">lookup_prefix() (pyhamtools.lookuplib.LookupLib method)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib.lookup_prefix">lookup_prefix() (pyhamtools.lookuplib.LookupLib method)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_prefix">[1]</a>
</dt>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_zone_exception">lookup_zone_exception() (pyhamtools.lookuplib.LookupLib method)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib.lookup_zone_exception">lookup_zone_exception() (pyhamtools.lookuplib.LookupLib method)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib.lookup_zone_exception">[1]</a>
</dt>
<dt><a href="LookupLib.html#pyhamtools.lookuplib.LookupLib">LookupLib (class in pyhamtools.lookuplib)</a>
<dt><a href="reference.html#pyhamtools.lookuplib.LookupLib">LookupLib (class in pyhamtools.lookuplib)</a>, <a href="lookupLib.html#pyhamtools.lookuplib.LookupLib">[1]</a>
</dt>
</dl></td>
@ -199,21 +205,25 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="Callinfo.html#module-pyhamtools.callinfo">pyhamtools.callinfo (module)</a>
<dt><a href="reference.html#module-pyhamtools.callinfo">pyhamtools.callinfo (module)</a>, <a href="callinfo.html#module-pyhamtools.callinfo">[1]</a>
</dt>
<dt><a href="locator.html#module-pyhamtools.locator">pyhamtools.locator (module)</a>
<dt><a href="reference.html#module-pyhamtools.frequency">pyhamtools.frequency (module)</a>
</dt>
<dt><a href="reference.html#module-pyhamtools.locator">pyhamtools.locator (module)</a>, <a href="reference.html#module-pyhamtools.locator">[1]</a>, <a href="locator.html#module-pyhamtools.locator">[2]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="LookupLib.html#module-pyhamtools.lookuplib">pyhamtools.lookuplib (module)</a>
<dt><a href="reference.html#module-pyhamtools.lookuplib">pyhamtools.lookuplib (module)</a>, <a href="lookupLib.html#module-pyhamtools.lookuplib">[1]</a>
</dt>
<dt><a href="utils.html#module-pyhamtools.utils">pyhamtools.utils (module)</a>
<dt><a href="reference.html#module-pyhamtools.utils">pyhamtools.utils (module)</a>, <a href="utils.html#module-pyhamtools.utils">[1]</a>, <a href="frequency.html#module-pyhamtools.utils">[2]</a>
</dt>
</dl></td>
@ -255,7 +265,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>help &mdash; pyhamtools 0.4.0 documentation</title>
<title>help &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -23,7 +23,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
</head>
<body>
<div class="related">
@ -35,7 +35,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -86,7 +86,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PyHamTools &mdash; pyhamtools 0.4.0 documentation</title>
<title>PyHamTools &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -23,8 +23,8 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="#" />
<link rel="next" title="utils" href="utils.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="#" />
<link rel="next" title="Reference" href="reference.html" />
</head>
<body>
<div class="related">
@ -37,9 +37,9 @@
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="utils.html" title="utils"
<a href="reference.html" title="Reference"
accesskey="N">next</a> |</li>
<li><a href="#">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="#">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -54,7 +54,7 @@
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Version:</th><td class="field-body">0.4.0</td>
<tr class="field-odd field"><th class="field-name">Version:</th><td class="field-body">0.4.1</td>
</tr>
<tr class="field-even field"><th class="field-name">Code:</th><td class="field-body"><a class="reference external" href="https://github.com/dh1tw/pyhamtools">https://github.com/dh1tw/pyhamtools</a></td>
</tr>
@ -69,43 +69,50 @@
</tbody>
</table>
<p>PyHamTools is a Python library which helps you creating Amateur Radio applications faster. It comes
with some modules and classes which are frequently needed, like locator based calculations (distance,
heading, etc) or parsing of Amateur Radio callsigns.</p>
<p>Currently, PyHamtools contains the following modules and classes:</p>
<div class="section" id="modules">
<h2>Modules<a class="headerlink" href="#modules" title="Permalink to this headline"></a></h2>
with some modules and classes which are frequently needed:</p>
<blockquote>
<div><ul class="simple">
<li>Locator based calculations (distance, heading, sunrise/sunset, Locator to Lat/Long conversion)</li>
<li>Checking frequencies against the IARU bandplan or</li>
<li>Parsing Amateur Radio callsigns using <a class="reference external" href="https://secure.clublog.org/">Clublog.org</a>&#8216;s or AD1C&#8217;s <a class="reference external" href="http://www.country-files.com/">Country-Files.com</a> database</li>
</ul>
</div></blockquote>
<p>PyHamTools is used in production at the DXHeat.com <a class="reference external" href="https://dxheat.com">DXCluster</a>, performing several thousand lookups and calculations per day.</p>
<div class="section" id="pyhamtools-documentation">
<h2>PyHamTools Documentation<a class="headerlink" href="#pyhamtools-documentation" title="Permalink to this headline"></a></h2>
<p>Contents:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="utils.html">utils</a><ul class="simple">
<li class="toctree-l1"><a class="reference internal" href="reference.html">Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference.html#module-pyhamtools.locator">pyhamtools.locator</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference.html#module-pyhamtools.frequency">pyhamtools.frequency</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference.html#module-pyhamtools.callinfo">pyhamtools.callinfo</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference.html#module-pyhamtools.lookuplib">pyhamtools.lookuplib</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference.html#module-pyhamtools.utils">pyhamtools.utils (deprecated)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="locator.html">locator</a><ul class="simple">
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#calculate-shortpath-and-longpath-heading-between-two-locators">Calculate Shortpath and Longpath Heading between two locators</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#calculate-distance-between-two-wgs84-coordinates">Calculate Distance between two WGS84 Coordinates</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#calculate-sunrise-and-sunset-for-jn48qm-on-the-1-january-2015">Calculate Sunrise and Sunset for JN48QM on the 1. January 2015</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#decode-a-callsign-and-get-country-itu-zone-cq-zone-latitude-longitude">Decode a Callsign and get Country, ITU Zone, CQ Zone, Latitude &amp; Longitude</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="changelog.html#pyhamtools-0-4-1">PyHamTools 0.4.1</a></li>
<li class="toctree-l2"><a class="reference internal" href="changelog.html#pyhamtools-0-4-0">PyHamTools 0.4.0</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="clases">
<h2>Clases<a class="headerlink" href="#clases" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="Callinfo.html">Callinfo</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="LookupLib.html">LookupLib</a><ul class="simple">
</ul>
</li>
</ul>
</div>
<div class="section" id="indices-and-tables">
<h3>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline"></a></h3>
<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
</ul>
</div>
</div>
</div>
@ -117,18 +124,15 @@ heading, etc) or parsing of Amateur Radio callsigns.</p>
<h3><a href="#">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">PyHamTools</a><ul>
<li><a class="reference internal" href="#modules">Modules</a></li>
<li><a class="reference internal" href="#clases">Clases</a><ul>
<li><a class="reference internal" href="#pyhamtools-documentation">PyHamTools Documentation</a></li>
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Next topic</h4>
<p class="topless"><a href="utils.html"
title="next chapter">utils</a></p>
<p class="topless"><a href="reference.html"
title="next chapter">Reference</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/index.txt"
@ -161,9 +165,9 @@ heading, etc) or parsing of Amateur Radio callsigns.</p>
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="utils.html" title="utils"
<a href="reference.html" title="Reference"
>next</a> |</li>
<li><a href="#">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="#">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>license &mdash; pyhamtools 0.4.0 documentation</title>
<title>license &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -23,7 +23,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
</head>
<body>
<div class="related">
@ -35,7 +35,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -112,7 +112,7 @@ SOFTWARE.</p>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LookupLib &mdash; pyhamtools 0.4.0 documentation</title>
<title>LookupLib &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -23,8 +23,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="prev" title="Callinfo" href="Callinfo.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
</head>
<body>
<div class="related">
@ -36,10 +35,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Callinfo.html" title="Callinfo"
accesskey="P">previous</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -72,7 +68,7 @@ The documentation of the various methods provide more detail.</p>
lookup against the Clublog API.</p>
<p>The entire lookup data can also be copied into Redis, which an extremely fast in-memory Key/Value store.
A LookupLib object can be instanciated to perform then all lookups in Redis, instead processing and loading
the data from Internet / File. This saves some time and allows several instances of <a class="reference internal" href="#pyhamtools.lookuplib.LookupLib" title="pyhamtools.lookuplib.LookupLib"><tt class="xref py py-class docutils literal"><span class="pre">LookupLib</span></tt></a>
the data from Internet / File. This saves some time and allows several instances of <a class="reference internal" href="reference.html#pyhamtools.lookuplib.LookupLib" title="pyhamtools.lookuplib.LookupLib"><tt class="xref py py-class docutils literal"><span class="pre">LookupLib</span></tt></a>
to query the same data concurrently.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -152,7 +148,7 @@ instance of Redis, as well the python Redis connector (pip install redis-py).</p
<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>9</em>, <em>21</em>, <em>18</em>, <em>15</em>, <em>2</em>, <em>393560</em>, <em>tzinfo=&lt;UTC&gt;)</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>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>994044</em>, <em>tzinfo=&lt;UTC&gt;)</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" />
@ -208,7 +204,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>9</em>, <em>21</em>, <em>18</em>, <em>15</em>, <em>2</em>, <em>393534</em>, <em>tzinfo=&lt;UTC&gt;)</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>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>994018</em>, <em>tzinfo=&lt;UTC&gt;)</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" />
@ -314,7 +310,7 @@ the id 273.</p>
<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>9</em>, <em>21</em>, <em>18</em>, <em>15</em>, <em>2</em>, <em>393534</em>, <em>tzinfo=&lt;UTC&gt;)</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>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>994018</em>, <em>tzinfo=&lt;UTC&gt;)</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" />
@ -372,7 +368,7 @@ database (default database).</p>
<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>9</em>, <em>21</em>, <em>18</em>, <em>15</em>, <em>2</em>, <em>393566</em>, <em>tzinfo=&lt;UTC&gt;)</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>9</em>, <em>26</em>, <em>23</em>, <em>10</em>, <em>28</em>, <em>994050</em>, <em>tzinfo=&lt;UTC&gt;)</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
@ -427,12 +423,9 @@ in CQ Zone 38</p>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="Callinfo.html"
title="previous chapter">Callinfo</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/LookupLib.txt"
<li><a href="_sources/lookupLib.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
@ -461,10 +454,7 @@ in CQ Zone 38</p>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Callinfo.html" title="Callinfo"
>previous</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

Binary file not shown.

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Python Module Index &mdash; pyhamtools 0.4.0 documentation</title>
<title>Python Module Index &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -23,7 +23,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
@ -38,7 +38,7 @@
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -67,17 +67,22 @@
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="Callinfo.html#module-pyhamtools.callinfo"><tt class="xref">pyhamtools.callinfo</tt></a></td><td>
<a href="reference.html#module-pyhamtools.callinfo"><tt class="xref">pyhamtools.callinfo</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="locator.html#module-pyhamtools.locator"><tt class="xref">pyhamtools.locator</tt></a></td><td>
<a href="reference.html#module-pyhamtools.frequency"><tt class="xref">pyhamtools.frequency</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="LookupLib.html#module-pyhamtools.lookuplib"><tt class="xref">pyhamtools.lookuplib</tt></a></td><td>
<a href="reference.html#module-pyhamtools.locator"><tt class="xref">pyhamtools.locator</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="reference.html#module-pyhamtools.lookuplib"><tt class="xref">pyhamtools.lookuplib</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
@ -118,7 +123,7 @@
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

View file

@ -6,7 +6,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search &mdash; pyhamtools 0.4.0 documentation</title>
<title>Search &mdash; pyhamtools 0.4.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@ -14,7 +14,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.4.0',
VERSION: '0.4.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@ -24,7 +24,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="top" title="pyhamtools 0.4.0 documentation" href="index.html" />
<link rel="top" title="pyhamtools 0.4.1 documentation" href="index.html" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
@ -43,7 +43,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
@ -94,7 +94,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">pyhamtools 0.4.0 documentation</a> &raquo;</li>
<li><a href="index.html">pyhamtools 0.4.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">

File diff suppressed because one or more lines are too long

View file

@ -1,10 +0,0 @@
Callinfo
========
.. toctree::
:maxdepth: 2
.. automodule:: pyhamtools.callinfo
.. autoclass:: Callinfo
:members:

View file

@ -1,10 +0,0 @@
LookupLib
=========
.. toctree::
:maxdepth: 2
.. automodule:: pyhamtools.lookuplib
.. autoclass:: LookupLib
:members:

22
docs/source/changelog.rst Normal file
View file

@ -0,0 +1,22 @@
Changelog
---------
PyHamTools 0.4.1
================
27. September 2014
* short calls in different countries (e.g. 9H3A/C6A) are now decoded correctly
* added pyhamtools.frequency
* moved pyhamtools.utils.freq_to_band into pyhamtools.frequency
* deprecated module pyhamtools.utils
PyHamTools 0.4.0
================
20. September 2014
* Added module for locator based calculations (pyhamtools.locators)

View file

@ -60,7 +60,7 @@ copyright = u'2014, Tobias Wellnitz, DH1TW'
# The short X.Y version.
version = '0.4'
# The full version, including alpha/beta/rc tags.
release = '0.4.0'
release = '0.4.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

80
docs/source/examples.rst Normal file
View file

@ -0,0 +1,80 @@
Examples
========
Almost each class / function in the reference section has an example. For the sake of convenience, some examples are shown below to give you a quick understanding how PyHamTools work.
Calculate Shortpath and Longpath Heading between two locators
-------------------------------------------------------------
.. code-block:: none
>>> from pyhamtools.locator import calculate_heading, calculate_heading_longpath
>>> calculate_heading("JN48QM", "QF67bf")
74.3136
>>> calculate_heading_longpath("JN48QM", "QF67bf")
254.3136
Calculate Distance between two WGS84 Coordinates
------------------------------------------------
.. code-block:: none
>>> from pyhamtools.locator import calculate_distance, latlong_to_locator
>>> locator1 = latlong_to_locator(48.52, 9.375)
>>> locator2 = latlong_to_locator(-32.77, 152.125)
>>> distance = calculate_heading(locator1, locator2)
>>> print("%.1fkm" % distance)
16466.4km
Calculate Sunrise and Sunset for JN48QM on the 1. January 2015
--------------------------------------------------------------
.. code-block:: none
>>> from pyhamtools.locator import calculate_sunrise_sunset
>>> from datetime import datetime
>>> my_locator = "JN48QM"
>>> my_date = datetime(year=2015, month=1, day=1)
>>> data = calculate_sunrise_sunset(my_locator, my_date)
>>> print "Sunrise: " + data['sunrise'].strftime("%H:%MZ") + ", Sunset: " + data['sunset'].strftime("%H:%MZ")
Sunrise: 07:14Z, Sunset: 16:15Z
Decode a Callsign and get Country name, ADIF ID, Latitude & Longitude
---------------------------------------------------------------------
In this example we will use AD1C's Country-files.com database to perform the lookup.
First we need to instanciate a LookupLib object for Country-files.com database. The latest database will be downloaded automatically.
.. code-block:: none
>>> from pyhamtools import LookupLib, Callinfo
>>> my_lookuplib = LookupLib(lookuptype="countryfile")
Next, a Callinfo class needs to be instanciated. The lookuplib object will be injected on construction.
.. code-block:: none
>>> cic = Callinfo(my_lookuplib)
Now we can query the information conveniently through our Callinfo object:
.. code-block:: none
>>> cic.get_all("DH1TW")
{
'country': 'Fed. Rep. of Germany',
'adif': 230,
'continent': 'EU',
'latitude': 51.0,
'longitude': -10.0,
'cqz': 14,
'ituz': 28
}

View file

@ -12,34 +12,36 @@
:IRC: #hamtests on webirc.deltaxray.org
PyHamTools is a Python library which helps you creating Amateur Radio applications faster. It comes
with some modules and classes which are frequently needed, like locator based calculations (distance,
heading, etc) or parsing of Amateur Radio callsigns.
with some modules and classes which are frequently needed:
Currently, PyHamtools contains the following modules and classes:
- Locator based calculations (distance, heading, sunrise/sunset, Locator to Lat/Long conversion)
Modules
^^^^^^^
.. toctree::
:maxdepth: 2
- Checking frequencies against the IARU bandplan or
utils
locator
- Parsing Amateur Radio callsigns using Clublog.org_'s or AD1C's Country-Files.com_ database
Clases
^^^^^^
PyHamTools is used in production at the DXHeat.com DXCluster_, performing several thousand lookups and calculations per day.
.. _Clublog.org: https://secure.clublog.org/
.. _Country-Files.com: http://www.country-files.com/
.. _DXCluster: https://dxheat.com
PyHamTools Documentation
========================
Contents:
.. toctree::
:maxdepth: 2
Callinfo
LookupLib
reference
examples
changelog
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View file

@ -1,8 +0,0 @@
locator
=======
.. toctree::
:maxdepth: 2
.. automodule:: pyhamtools.locator
:members:

39
docs/source/reference.rst Normal file
View file

@ -0,0 +1,39 @@
Reference
=========
pyhamtools.locator
------------------
.. module:: pyhamtools.locator
.. automodule:: pyhamtools.locator
:members:
pyhamtools.frequency
--------------------
.. automodule:: pyhamtools.frequency
:members:
pyhamtools.callinfo
-------------------
.. automodule:: pyhamtools.callinfo
.. autoclass:: Callinfo
:members:
pyhamtools.lookuplib
--------------------
.. automodule:: pyhamtools.lookuplib
.. autoclass:: LookupLib
:members:
pyhamtools.utils (deprecated)
-----------------------------
.. automodule:: pyhamtools.utils
:members:

View file

@ -1,8 +0,0 @@
utils
=====
.. toctree::
:maxdepth: 2
.. automodule:: pyhamtools.utils
:members:

View file

@ -135,7 +135,7 @@ class Callinfo(object):
callsign = re.sub('/[A-Z0-9]{1,4}$', '', callsign) # cut off 2. appendix DH1TW/HC2/P -> DH1TW/HC2
# multiple character appendix (callsign/xxx)
if re.search('/[A-Z0-9]{2,4}$', callsign): # case call/xxx, but ignoring /p and /m or /5
if re.search('[A-Z0-9]{4,10}/[A-Z0-9]{2,4}$', callsign): # case call/xxx, but ignoring /p and /m or /5
appendix = re.search('/[A-Z0-9]{2,4}$', callsign)
appendix = re.sub('/', '', appendix.group(0))
self._logger.debug("appendix: " + appendix)

166
pyhamtools/frequency.py Normal file
View file

@ -0,0 +1,166 @@
from pyhamtools.consts import LookupConventions as const
def freq_to_band(freq):
"""converts a Frequency [kHz] into the band and mode according to the IARU bandplan
Args:
frequency (float): Frequency in kHz
Returns:
dict: Dictionary containing the band (int) and mode (str)
Raises:
KeyError: Wrong frequency or out of band
Example:
The following example converts the frequency *14005.3 kHz* into band and mode.
>>> from pyhamtools.utils import freq_to_band
>>> print freq_to_band(14005.3)
{
'band': 20,
'mode': CW
}
Note:
Modes are:
- CW
- USB
- LSB
- DIGITAL
"""
band = None
mode = None
if ((freq >= 135) and (freq <= 138)):
band = 2190
mode = const.CW
elif ((freq >= 1800) and (freq <= 2000)):
band = 160
if ((freq >= 1800) and (freq < 1838)):
mode = const.CW
elif ((freq >= 1838) and (freq < 1840)):
mode = const.DIGITAL
elif ((freq >= 1840) and (freq < 2000)):
mode = const.LSB
elif ((freq >= 3500) and (freq <= 4000)):
band = 80
if ((freq >= 3500) and (freq < 3580)):
mode = const.CW
elif ((freq >= 3580) and (freq < 3600)):
mode = const.DIGITAL
elif ((freq >= 3600) and (freq < 4000)):
mode = const.LSB
elif ((freq >= 5000) and (freq <= 5500)):
band = 60
elif ((freq >= 7000) and (freq <= 7300)):
band = 40
if ((freq >= 7000) and (freq < 7040)):
mode = const.CW
elif ((freq >= 7040) and (freq < 7050)):
mode = const.DIGITAL
elif ((freq >= 7050) and (freq < 7300)):
mode = const.LSB
elif ((freq >= 10100) and (freq <= 10150)):
band = 30
if ((freq >= 10100) and (freq < 10140)):
mode = const.CW
elif ((freq >= 10140) and (freq < 10150)):
mode = const.DIGITAL
elif ((freq >= 14000) and (freq <= 14350)):
band = 20
if ((freq >= 14000) and (freq < 14070)):
mode = const.CW
elif ((freq >= 14070) and (freq < 14099)):
mode = const.DIGITAL
elif ((freq >= 14100) and (freq < 14350)):
mode = const.USB
elif ((freq >= 18068) and (freq <= 18268)):
band = 17
if ((freq >= 18068) and (freq < 18095)):
mode = const.CW
elif ((freq >= 18095) and (freq < 18110)):
mode = const.DIGITAL
elif ((freq >= 18110) and (freq < 18268)):
mode = const.USB
elif ((freq >= 21000) and (freq <= 21450)):
band = 15
if ((freq >= 21000) and (freq < 21070)):
mode = const.CW
elif ((freq >= 21070) and (freq < 21150)):
mode = const.DIGITAL
elif ((freq >= 21150) and (freq < 21450)):
mode = const.USB
elif ((freq >= 24890) and (freq <= 24990)):
band = 12
if ((freq >= 24890) and (freq < 24915)):
mode = const.CW
elif ((freq >= 24915) and (freq < 24930)):
mode = const.DIGITAL
elif ((freq >= 24930) and (freq < 24990)):
mode = const.USB
elif ((freq >= 28000) and (freq <= 29700)):
band = 10
if ((freq >= 28000) and (freq < 28070)):
mode = const.CW
elif ((freq >= 28070) and (freq < 28190)):
mode = const.DIGITAL
elif ((freq >= 28300) and (freq < 29700)):
mode = const.USB
elif ((freq >= 50000) and (freq <= 54000)):
band = 6
if ((freq >= 50000) and (freq < 50100)):
mode = const.CW
elif ((freq >= 50100) and (freq < 50500)):
mode = const.USB
elif ((freq >= 50500) and (freq < 51000)):
mode = const.DIGITAL
elif ((freq >= 70000) and (freq <= 71000)):
band = 4
mode = None
elif ((freq >= 144000) and (freq <= 148000)):
band = 2
if ((freq >= 144000) and (freq < 144150)):
mode = const.CW
elif ((freq >= 144150) and (freq < 144400)):
mode = const.USB
elif ((freq >= 144400) and (freq < 148000)):
mode = None
elif ((freq >= 220000) and (freq <= 226000)):
band = 1.25 #1.25m
mode = None
elif ((freq >= 420000) and (freq <= 470000)):
band = 0.7 #70cm
mode = None
elif ((freq >= 902000) and (freq <= 928000)):
band = 0.33 #33cm US
mode = None
elif ((freq >= 1200000) and (freq <= 1300000)):
band = 0.23 #23cm
mode = None
elif ((freq >= 2390000) and (freq <= 2450000)):
band = 0.13 #13cm
mode = None
elif ((freq >= 3300000) and (freq <= 3500000)):
band = 0.09 #9cm
mode = None
elif ((freq >= 5650000) and (freq <= 5850000)):
band = 0.053 #5.3cm
mode = None
elif ((freq >= 10000000) and (freq <= 10500000)):
band = 0.03 #3cm
mode = None
elif ((freq >= 24000000) and (freq <= 24050000)):
band = 0.0125 #1,25cm
mode = None
elif ((freq >= 47000000) and (freq <= 47200000)):
band = 0.0063 #6,3mm
mode = None
else:
raise KeyError
return {"band": band, "mode": mode}

View file

@ -4,33 +4,10 @@ from pyhamtools.consts import LookupConventions as const
def freq_to_band(freq):
"""converts a Frequency [kHz] into the band and mode according to the IARU bandplan
Args:
frequency (float): Frequency in kHz
Returns:
dict: Dictionary containing the band (int) and mode (str)
Raises:
KeyError: Wrong frequency or out of band
Example:
The following example converts the frequency *14005.3 kHz* into band and mode.
>>> from pyhamtools.utils import freq_to_band
>>> print freq_to_band(14005.3)
{
'band': 20,
'mode': CW
}
Note:
Modes are:
- CW
- USB
- LSB
- DIGITAL
**DEPRECATION NOTICE**
This function has been moved to pyhamtools.frequency with PyHamTools 0.4.1
Please don't use this module/function anymore. It will be removed soon.
"""

View file

@ -8,7 +8,7 @@ if sys.version_info >= (3,):
kw['use_2to3'] = True
setup(name='pyhamtools',
version='0.4.0',
version='0.4.1',
description='Collection of Tools for Amateur Radio developers',
author='Tobias Wellnitz, DH1TW',
author_email='Tobias@dh1tw.de',

View file

@ -138,7 +138,7 @@ class Test_callinfo_methods:
assert fix_callinfo._dismantle_callsign("DH1TW") == response_prefix_DH_clublog
assert fix_callinfo._dismantle_callsign("DL/HC2AO") == response_prefix_DH_clublog
assert fix_callinfo._dismantle_callsign("9H5A/C6A") == response_prefix_C6A_clublog
# assert fix_callinfo._dismantle_callsign("C6A/9H5A") == response_Prefix_C6A
assert fix_callinfo._dismantle_callsign("C6A/9H5A") == response_prefix_C6A_clublog
if fix_callinfo._lookuplib._lookuptype == "countryfile":
assert fix_callinfo._dismantle_callsign("DH1TW/QRP") == response_prefix_DH_countryfile
@ -153,8 +153,7 @@ class Test_callinfo_methods:
assert fix_callinfo._dismantle_callsign("DH1TW") == response_prefix_DH_countryfile
assert fix_callinfo._dismantle_callsign("DL/HC2AO") == response_prefix_DH_countryfile
assert fix_callinfo._dismantle_callsign("9H5A/C6A") == response_prefix_C6A_countryfile
# assert fix_callinfo._dismantle_callsign("C6A/9H5A") == response_Prefix_C6A
assert fix_callinfo._dismantle_callsign("C6A/9H5A") == response_prefix_C6A_countryfile
def test_lookup_callsign(selfself, fix_callinfo):

View file

@ -1,5 +1,5 @@
import pytest
from pyhamtools.utils import freq_to_band
from pyhamtools.frequency import freq_to_band
from pyhamtools.consts import LookupConventions as const
class Test_utils_freq_to_band():