PyMeeus
=======

   **Library of astronomical algorithms in Python**.

PyMeeus is a Python implementation of the astronomical algorithms
described in the classical book 'Astronomical Algorithms, 2nd Edition,
Willmann-Bell Inc. (1998)' by Jean Meeus.

There are great astronomical libraries out there. For instance, if
you're looking for high precision and speed you should take a look at
`libnova <http://libnova.sourceforge.net/>`__. For a set of python
modules aimed at professional astronomers, you should look at
`Astropy <http://www.astropy.org/>`__. On the other hand, the advantages
of PyMeeus are its simplicity, ease of use, ease of reading, ease of
installation (it has the minimum amount of dependencies) and abundant
documentation.

Installation
------------

The easiest way of installing PyMeeus is using pip:

.. code:: sh

   pip install pymeeus

Or, for a per-user installation:

.. code:: sh

   pip install --user pymeeus

If you prefer Python3, you can use:

.. code:: sh

   pip3 install --user pymeeus

If you have PyMeeus already installed, but want to upgrade to the latest
version:

.. code:: sh

   pip3 install -U pymeeus

Meta
----

Author: Dagoberto Salazar

Distributed under the GNU Lesser General Public License v3 (LGPLv3). See
``LICENSE.txt`` and ``COPYING.LESSER`` for more information.

Documentation: https://pymeeus.readthedocs.io/en/latest/

GitHub: https://github.com/architest/pymeeus

If you have Sphinx installed, you can generate your own, latest
documentation going to directory 'docs' and issuing:

.. code:: sh

   make html

Then the HTML documentation pages can be found in 'build/html'.

Contributing
------------

The preferred method to contribute is through forking and pull requests:

1. Fork it (https://github.com/architest/pymeeus/fork)
2. Create your feature branch (``git checkout -b feature/fooBar``)
3. Commit your changes (``git commit -am 'Add some fooBar'``)
4. Push to the branch (``git push origin feature/fooBar``)
5. Create a new Pull Request

Please bear in mind that PyMeeus follows the PEP8 style guide for Python
code `(PEP8) <https://www.python.org/dev/peps/pep-0008/?>`__. We suggest
you install and use a linter like
`Flake8 <http://flake8.pycqa.org/en/latest/>`__ before contributing.

Additionally, PyMeeus makes heavy use of automatic tests. As a general
rule, every function or method added must have a corresponding test in
the proper place in ``tests`` directory.

Finally, documentation is also a big thing here. Add proper and abundant
documentation to your new code. This also includes in-line comments!!!.

Contributors
------------

-  `Neil Freeman <https://github.com/fitnr>`__ - Fixed undefined
   variable in Epoch.tt2ut
-  `molsen234 <https://github.com/molsen234>`__ - Fixed bug when using
   fractional seconds, minutes, hours or days
-  `Sebastian Veigl <https://github.com/sebastian1306>`__ - Added
   functionality for Jupiter's moons
-  Sophie Scholz - Added functionality for Jupiter's moons
-  Vittorio Serra - Added functionality for Jupiter's moons
-  Michael Lutz - Added functionality for Jupiter's moons
-  `Ben Dilday <https://github.com/bdilday>`__ - Added ``__hash__()``
   method to class Epoch

What's new
----------

-  0.5.11

   -  Added parameter ``local`` to the ``Epoch`` class constructor and
      the methods ``get_date()`` and ``get_full_date()``.

-  0.5.10

   -  Added methods ``moon_librations()`` and
      ``moon_position_angle_axis()``.

-  0.5.9

   -  Added method ``moon_maximum_declination()``.

-  0.5.8

   -  Fixed several bugs in ``Epoch`` class, and added method ``doy()``.

-  0.5.7

   -  Added method ``moon_passage_nodes()``.

-  0.5.6

   -  Added method ``moon_perigee_apogee()``.

-  0.5.5

   -  Added method ``moon_phase()``.

-  0.5.4

   -  Added methods ``illuminated_fraction_disk()`` and
      ``position_bright_limb()`` to ``Moon`` class.

-  0.5.3

   -  Fixed error in the return type of method
      ``Sun.equation_of_time()``.

-  0.5.2

   -  Added methods to compute the Moon's longitude of ascending node
      and perigee.

-  0.5.1

   -  Changes in the organization of the documentation.

-  0.5.0

   -  Added ``Moon`` class and ``position()`` methods.

-  0.4.3

   -  Added method ``ring_parameters()`` to Saturn class.

-  0.4.2

   -  Added method ``__hash__()`` to Epoch. Now Epoch objects can be
      used as keys in a dictionary.

-  0.4.1

   -  Added funtionality to compute the positions of Jupiter's Galilean
      moons.

-  0.4.0

   -  Added methods to compute Saturn's ring inclination and longitude
      of ascending node.

-  0.3.13

   -  Additional encoding changes.

-  0.3.12

   -  Deleted ``encoding`` keyword from setup.py, which was giving
      problems.

-  0.3.11

   -  Added encoding specification to setup.py.

-  0.3.10

   -  Fixed characters with the wrong encoding.

-  0.3.9

   -  Relaxed requirements, added contributor molsen234, and fixed
      format problems showed by flake8.

-  0.3.8

   -  Fixed undefined variable in ``Epoch.tt2ut``.

-  0.3.7

   -  Fix bug when using fractional seconds, minutes, hours or days,
      plus documentation improvements.

-  0.3.6

   -  Add method to compute rising and setting times of the Sun.

-  0.3.5

   -  Add method ``magnitude()`` to planet classes.

-  0.3.4

   -  Add method to compute the parallax correction to Earth class.

-  0.3.3

   -  Add methods to compute the passage through the nodes.

-  0.3.2

   -  Add methods to compute the perihelion and aphelion of all planets.

-  0.3.1

   -  Fix errors in the elongation computation, add tests and examples
      of use of methods ``geocentric_position()``, and tests and
      examples for ``Pluto`` class.

-  0.3.0

   -  Added ``Pluto`` class.
