Skip to main content

SFalmanac is a Python 3 script that creates the daily pages of the Nautical Almanac (based on the UT timescale). The generated tables are needed for celestial navigation with a sextant. Although you are strongly advised to purchase the official Nautical Almanac, this program will reproduce the tables with no warranty or guarantee of accuracy.

NOTE: SFalmanac has now been superceeded by Skyalmanac. Currently the functionality is identical, however, if using SFalmanac, please switch to Skyalmanac as SFalmanac will not be upgraded in the future.

SFalmanac employs multiprocessing (if your processor has multiple cores) reducing the processing time. (Single-processing is also available as an option.)

Quick Overview

SFalmanac not only creates the daily pages of the Nautical Almanac - it also contains Lunar Distance tables and charts and “Increments and Corrections” tables as well as abbreviated Sun tables and Event Time tables.

This is the PyPI edition of SFalmanac-Py3 (a Changelog can be viewed here). Version numbering follows the scheme Major.Minor.Patch, whereby the Patch number represents some small correction to the intended release.

NOTE: Version numbering in PyPI restarted from 1.0 as the previous well-tested versions that exist since early 2019 were never published as PyPI packages.

The astronomical library employed is: Skyfield.
SFalmanac uses the Hipparcos catalog as its star database.
Note that two options are available (by manually editing config.py):
  • if “useIERS = False”, the built-in UT1 tables in the installed version of Skyfield will be employed.

  • if “useIERS = True”, for optimal accuracy (specifically for all GHA data), Earth orientation data from IERS (International Earth Rotation and Reference Systems Service) is downloaded and then used until it ‘expires’. It expires after a chosen number of days (specifiable in config.py). Note that IERS specifies the range of Earth Orientation Parameter (EOP) data from 2nd January 1973 and is updated weekly. Refer to the IERS web site for current information.

Software Requirements


Nearly all of the astronomical computation is done by the Skyfield library.
Typesetting is done typically with MiKTeX or TeX Live.
Here are the requirements/recommendations:

Skyfield version 1.55 or newer is recommended (versions 1.50 to 1.54 are known to have issues).

Installation on Windows 10/11; on Linux before Python 3.12; on Mac before MacOS 14


Install a TeX/LaTeX program on your operating system so that pdflatex is available.
Ensure that the pip Python installer tool is installed. Check that the latest version of SFalmanac is installed:
python -m pip install --upgrade sfalmanac

Installing SFalmanac ensures that Skyfield and Pandas (and their dependencies) are also installed. If previous versions of SFalmanac were installed, consider upgrading Skyfield and Pandas thus:

python -m pip install --upgrade skyfield pandas

Thereafter run it with:

python -m sfalmanac

On a POSIX system (Linux or Mac OS), use python3 instead of python in the commands above.
This PyPI edition also supports installing and running in a venv virtual environment.
Finally check or change the settings in config.py. Its location is printed immediately whenever SFalmanac runs.

Installation on Linux with Python 3.12 and higher; on MacOS 14 and higher

More recent versions of Python (on specific operating systems) prevent users installating a PyPI package (such as Skyfield, SFalmanac, numpy, Pandas) in the Python system-wide area. The error message is “This environment is externally managed” and this is intended to avoid a conflict between the distribution’s package manager and Python package management tools as defined in the PEP-668 documentation.

The intention is to persuade users to install PyPI packages in a virtual environment instead, which functions very well. The downside: a virtual environment is typically created in a project folder, so you may require several vitrual environments. It is NOT wise to “break the rules” and force package installation in the Python system-wide area.

To assist users new to virtual environments, I have provided an Installation guide for Linux. (Package installation for MacOS is in principle the same.)

Guidelines for Linux & Mac OS

Quote from Chris Johnson:

It’s best to not use the system-provided Python directly. Leave that one alone since the OS can change it in undesired ways. The best practice is to configure your own Python version(s) and manage them on a per-project basis using venv. This eliminates all dependency on the system-provided Python version, and also isolates each project from other projects on the machine.

Each project can have a different Python point version if needed, and gets its own site_packages directory so pip-installed libraries can also have different versions by project. This approach is a major problem-avoider.

Metadata

Release files for sfalmanac 1.13.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sfalmanac 1.13.1
File Size Uploaded
sfalmanac-1.13.1.tar.gz 32.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for sfalmanac 1.13.1
File Interpreter ABI Platform
sfalmanac-1.13.1-py3-none-any.whl Python 3 none any Details

Total release size: 65.2 MB

Release files / sfalmanac-1.13.1.tar.gz

Download URL sfalmanac-1.13.1.tar.gz
Size 32.3 MB
Tags Source
SHA-256 checksum
How to use checksums
c7ebb563f75e87119ae885e81becdd0e2a9f618f840e2badd715ce61355ecc5c
BLAKE2b-256 checksum
How to use checksums
5add6233f7876190593fb2077391002fac0efcf49a9f78096e8730f441cc1bfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / sfalmanac-1.13.1-py3-none-any.whl

Download URL sfalmanac-1.13.1-py3-none-any.whl
Size 32.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
e5e33f1b9fc2026d820de864fc15c44da015b97b867ed056ffb88a6bfa90b675
BLAKE2b-256 checksum
How to use checksums
5bfb1a6e23c5828f70a5b87b3d53dd0b91fc35fa24ca66d76e9c7133c32c9c42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.13.1 This release

2 release files

1.13

2 release files

1.12.5

2 release files

1.12.3

2 release files

1.12.2

2 release files

1.12.1

2 release files

1.12

2 release files

1.11.5

2 release files

1.11.4

2 release files

1.11.3

2 release files

1.11

2 release files

1.10.3

2 release files

1.10.2

2 release files

1.10.1

2 release files

1.10

2 release files

1.9

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8

2 release files

1.7

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5

2 release files

1.4.1

2 release files

1.4

2 release files

1.3

2 release files

1.2

2 release files

1.1.1

2 release files

1.1

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page