Utility functions for use within the Project PANOPTES ecosystem and for general astronomical processing.
This library defines a number of modules that contain useful functions as well as a few services.
To install type:
pip install panoptes-utilsFull options for install:
pip install "panoptes-utils[config,docs,images,testing,social]"See the full documentation at: https://panoptes-utils.readthedocs.io
There are a few system dependencies depending on what functionality you will be using.
In particular, the plate solving requires astrometry.net and the appropriate index files.
Use the following on a debian-based system (e.g. Ubuntu) to easily install all dependencies:
apt-get update && apt-get install --no-install-recommends --yes \
libffi-dev libssl-dev \
astrometry.net astrometry-data-tycho2 \
dcraw exiftool libcfitsio-dev libcfitsio-bin \
libfreetype6-dev libpng-dev libjpeg-dev libffi-devThe panoptes-utils command line tool is available for use with subcommands
corresponding to the modules in this library. Currently, the only implemented
subcommand is image, which includes commands for converting cr2 files into
jpg and/or fits files as well as for plate-solving fits images.
The panoptes-utils image watch <path> command will watch the given path for
new files and convert them to jpg and/or fits files as they are added.
See panoptes-utils --help and panoptes-utils image --help for details.
There is a simple key-value configuration server available as part of the module.
After installing with the config option as above, type:
panoptes-config-server run --config-file <path-to-file.yaml>This project uses the Hatch build system and environment management.
Prerequisites:
- Python 3.12+
- Hatch: https://hatch.pypa.io (install via
pipx install hatchorpip install --user hatch).
Basic workflow:
-
Create and enter a dev environment with all testing tools:
hatch env create hatch shell # or run commands without activating the shell using `hatch run ...` -
Install optional extras as needed (choose any):
# Examples: google, focuser, sensors, weather hatch run pip install -e ".[config,images,testing]"
-
Run tests:
# All tests with coverage, using pytest options from pyproject.toml hatch run pytest # Single test file hatch run pytest tests/test_utils.py
-
Lint / style checks:
# Lint (Ruff) hatch run lint # Format (Ruff) hatch run fmt # Check formatting without changes hatch run fmt-check
-
Build the package (wheel and sdist):
hatch build
-
Run the CLI locally (Typer app):
hatch run pocs --help
-
Versioning: Version is derived from git tags via hatch-vcs. To produce a new version, create and push a tag (e.g.,
v0.1.0).
To test the software, prefer running via Hatch so the right environment and options are used:
hatch run pytestBy default all tests will be run. If you want to run one specific test, give the specific filename as an argument to pytest:
hatch run pytest tests/test_mount.py