The rise_set package provides Python routines for finding the positions of
astronomical bodies to reasonable precision. It can be used to calculate target
uptime and sunrise, sunset and twilight times, accurate to 30s-1m.

The code uses Fortran SLALIB for the heavy lifting. The rise/set/transit algorithms
here are implementations of Astronomical Algorithms, Ch. 14 (Jean Meeus).

****Use this library at your own risk! This library is an alpha support library for
the LCOGT scheduling system. The API is volatile, not particularly pleasant, and
subject to change without notice.****

Please report bugs to Eric Saunders (esaunders@lcogt.net). The issues page for this
project is http://issues.lco.gtn/projects/show/python-rise-set.

v 0.2.4  - Remove logging configuration: should be handled by clients
         - Fixed broken unit tests due to botched string refactoring
v 0.2.3  - Correctly handle circumpolar stars
         - Fixed refraction at non-zero horizons
v 0.2.2  - Fix rise/set/transit in same day (#3473)
         - Implemented horizon argument for calc_rise_set
v 0.2.1  - Generalised Angle class (#2272)
         - Implemented proper motion support (#2272)
         - Fixed sign error in transit refinement code (#1993)
         - Fixed rounding errors for second overflow (#3166)
         - Fixed broken interpolation over 24 hr RA boundaries (#3165)
v 0.2.5  - Fixed broken circumpolar calculation for southern hemisphere objects (#5969)
v 0.2.6  - Support for memoization of Angle and Visibility objects
v.0.2.7  - Standardisations for Pylint and Sonar, many bad practice cleanups
v.0.2.8  - Modified airmass handling
v.0.2.9  - Factory method for safe client rise_set target dict construction
v.0.2.10 - Fix for rare interpolation normalisation error, better reprs
v.0.3.0  - Implemented moving object (minor planet) support
v.0.3.1  - Added hour angle limit support to visibility objects (thanks Jason Eastman)
v.0.3.2  - Bug fix for large hour angles, added hour angle validation
v.0.3.3  - Added hour angle limit support to moving objects
v.0.3.4  - Added calc_local_sidereal_time
v.0.3.5  - Bug fix for hour angles when user window has a time component (thanks Jason Eastman)
v.0.3.6  - Fix for incorrect exception handler in elem_to_topocentric_apparent.
         - Fix incorrect case in initial element dictionary which resulted in 'Name' and 'name' being created
         - Fix handling of multi-opposition/year orbits in read_neocp_orbit.
         - Dump the elements out if we raise a MovingViolation exception (all above by Tim Lister)
v.0.3.7  - Add comet support.
         - Fix bug in gregorian_to_ut_mjd where fractional seconds were ignored (all above by Tim Lister)
v.0.3.8  - Fix incorrect normalisation of hour angles
v.0.3.9  - Completed comet support in Visibility objects and reading NEOCP files (with help from Tim Lister)
v.0.3.10 - Fix interval skipping in get_ha_intervals (thanks Curtis McCully)
         - Improved read_neocp_orbit() to handle single and multiple opposition orbits properly (Tim Lister)
v.0.3.11 - Fixes for handling of missing uncertainty, reference and residual in
           read_neocp_orbit(). Add docstring to date_to_tdb() (Tim Lister)
v.0.3.12 - Fix to correctly calculate hour angle limit intervals. (Curtis McCully)
v.0.3.13 - Added function for getting airmasses for times for a target and observer, calculate_airmass_for_times
v.0.3.14 - Adds a satellite target type and modifies Visibility to check for that target type and just return
           dark intervals for it (do no rise_set calculations).
v.0.3.16 - Added moon rise/set functionality and a moon_distance constraint for target visibility intervals.
v.0.4.0  - Made python 3 compatible
v.0.4.4  - Fixed warnings about elementwise comparison with None
v.0.4.5  - Fix bug in None comparison

Eric Saunders
October 2012
