Incompatible Change: After feedback from users, I have changed the Observer methods which find risings, settings, and transits, so that they do not change their Observer’s .date attribute. So the sequence:
r1 = boston.next_rising(mars)
r2 = boston.next_rising(mars)
now computes the same value twice! If you want a series of calls to each begin when the other left off, you can use the start= parameter described in the next item:
r1 = boston.next_rising(mars)
r2 = boston.next_rising(mars, start=r1)
Added an optional start= argument to the rising, setting, and transit Observer functions, that tells them from which date and time to begin their search.
Bugfix: Rewrote planetary moon routines so that moons of Mars, Jupiter, Saturn, and Uranus now return appropriate data for years 1999-2020. (Each moon had been returning the unmodified position of its planet, because I was unsure whether I could distribute the moon data with PyEphem.)
You can no longer create arbitrary attributes on an Observer, to prevent users from accidentially saying things like here.longitude or here.lon when they mean here.long. Create your own subclass of Observer if you need the power to set your own attributes.
The ephem module now provides a __version__ symbol.
Added test suite that tests planet and planet moon positions against JPL ephemeris data (needs more work).
Three new classes Equatorial, Ecliptic, and Galactic allow coordinates to be transformed between the three systems (ability to transform coordinates was requested by Aaron Parsons).
Added constants for popular epochs B1900, B1950, and J2000.
Added named functions for every solstice and equinox (before, only the vernal equinox could be asked for specifically).
Product tests have been moved inside of the ephem module itself, and can now be invoked simply by running:
$ python setup.py test
Bugfix: Angle() can no longer be directly instantiated.
Bugfix: San Francisco had the wrong coordinates in the cities database (pointed out by Randolph Bentson).
The phases of the moon can now be determined through the functions next_new_moon(), next_full_moon(), previous_new_moon(), et cetera.
Added a modest database of world cities; the city() function returns a new Observer on each call:
observer = ephem.city('Boston')
Using the old rise, set, and transit attributes on Body objects now causes a deprecation warning.
Bugfix: the last release of PyEphem omitted the constants meters_per_au, earth_radius, moon_radius, and sun_radius; the constant c (the speed of light) is also now available.
Upgraded to the libastro from XEphem 3.6.4, which:
Added several functions to the module:
Added a function to the Observer class, which takes no arguments:
sidereal_time() computes the sidereal time for the Observer
Each Observer now has a horizon attribute, with which you can specify the degrees altitude at which you define an object to be rising or setting. Normally, all rising and setting times are computed for when the object appears to be exactly at the horizon (at zero degrees altitude).