Skip to main content

Celerity

Celerity is a lightweight, research-grade, zero-dependency type-safe Python library for astronomical calculations to plan your observations. It's only dependency is the Python 3.11+ standard library.

It has been designed to be independent of any other popular astronomical libraries, with a focus on providing a simple and intuitive API for performing common astronomical calculations.

N.B. This project is currently in the early stages of development and is not yet ready for production use.


Usage

Installation

Celerity can be installed using pip:

pip install celerity

or poetry:

poetry add celerity

API

The API has been designed to be written in an idiomatic and natural way for English speakers, as well as idiomatic to Python.

It has been specifically designed to only depend on the core set of Python modules, such that it is not strictly dependent on other popular astronomical libraries, e.g., astropy (although it can compliment the usage of these libraries).

It's important to note that the API does not perform string parsing of times and coordinates, but instead requires the user to provide the correct data types. This is to ensure that the API is type-safe and that the user is aware of the data types being used at all times.

For example, to find out the horizontal coordinate for the star Betelgeuse on the 14th May 2021 at 12:00 UTC, at Mauna Kea, Hawaii, you would write:

from datetime import datetime, timezone

from celerity import Observer, Time

# Mauna Kea, Hawaii:
observer = Observer(
    latitude=19.82,
    longitude=-155.47,
    elevation=4205,
)

# Time of observation in UTC:
time = Time(
    when=datetime(2021, 5, 14, 12, 0, 0, tzinfo=timezone.utc)
)

# Provide an equatorial target in equatorial coordinates at epoch J2000 in units of degrees:
betelgeuse = { ra: 88.792938, dec: 7.407064 }

# Observe the target:
betelgeuse = observer.at(time).observe({ ra: 88.792938, dec: 7.407064 })

# Get the horizontal coordinates:
{ alt, az } = betelgeuse.altAz()

# What is the Local Sidereal Time at the time of observation?
lst = observer.at(time).LST()

# What is the Julian Date at the time of observation?
jd = observer.at(time).JD()

Notes & Caveats

Celerity is designed such that fundamental SI units of measurement are used, e.g., degrees, metres, seconds, etc. This is to ensure that the API is as accurate as possible, and that the user is aware of the units being used at all times.

The Observer class requires the user to provide the latitude and longitude in degrees, and the elevation in metres. Latitude is positive for the northern hemisphere, and negative for the southern hemisphere between -90° at the southern pole and +90° at the northern pole. Longitude is always positive for the eastern hemisphere (east of the Prime Meridian), and negative for the western hemisphere (west of the Prime Meridian) representing a longitude between -180° and +180°.

The Time class requires the user to provide the time in UTC, and not in any other timezone. The user can, once the Time object has been created, convert the time to any other timezone using the provided class methods.

The Target class requires the user to provide the right ascension and declination in degrees (and not in hours and degrees).


Package Development

Project Requirements

Installing Dependencies

The Celerity project manages Python package dependencies using Poetry. You'll need to follow the instructions for installation there.

Then you can start a shell session with the new environment with:

$ poetry shell

N.B. For development with vscode you will need to run the following command:

$ poetry config virtualenvs.in-project true

This will installed the poetry .venv in the root of the project and allow vscode to setup the environment correctly for development.

To start development, install all of the dependencies as:

$ poetry install

N.B. Ensure that any dependency changes are committed to source control, so everyone has a consistenct package dependecy list.

Local Development

The Celerity development stack can be built with the following docker compose command, with the $INSTALL_DEV build environment argument*.

$ docker compose -f local.yml build --build-arg INSTALL_DEV="true"

* This is required to install the development dependencies in the container.

Then start the development stack with a running shell session with:

$ docker compose -f local.yml run app bash

N.B. The docker compose command will build the development stack if it has not been built already.

Running Tests

To run the tests, please ensure you have followed the steps for building the development server:

The Celerity development stack can be built with the following docker compose command, with the $INSTALL_DEV build environment argument*.

$ docker compose -f local.yml build --build-arg INSTALL_DEV="true"

You can then run the pytest suite using the following command:

$ docker compose -f local.yml exec api pytest

Metadata

Release files for celerity 0.45.0

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

Source distribution (sdist)

Source distribution for celerity 0.45.0
File Size Uploaded
celerity-0.45.0.tar.gz 671.5 kB Details

Built distribution (wheel)

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

Total release size: 1.4 MB

Release files / celerity-0.45.0.tar.gz

Download URL celerity-0.45.0.tar.gz
Size 671.5 kB
Tags Source
SHA-256 checksum
How to use checksums
890ef5ba5be7ac5a10fc170618c149ffbeaae40e8d8e5454b96bb76cfd5fdcaa
BLAKE2b-256 checksum
How to use checksums
cf5266be55af054f4c5f7a1c85ccea7a16f607d58460be443af1e04a0cd95ac3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release files / celerity-0.45.0-py3-none-any.whl

Download URL celerity-0.45.0-py3-none-any.whl
Size 712.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
90ee0ca555c6e819a0f01189f655e29199cdc73d663bbdea0279eda9f8aa65b0
BLAKE2b-256 checksum
How to use checksums
0da8b6a872ceca8c8db0a6fd110c7b5dc60c46c51702c8bca9cad971503ccebc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.45.0 This release

2 release files

0.44.0

2 release files

0.43.0

2 release files

0.41.0

2 release files

0.39.0

2 release files

0.38.0

2 release files

0.37.0

2 release files

0.36.0

2 release files

0.35.0

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.29.0

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.25.3

2 release files

0.25.2

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.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