Astral is a python package for calculating the times of various aspects of the sun and moon.
It can calculate the following
Astral also comes with a geocoder containing a local database that allows you to look up information for a small set of locations ( new locations can be added ).