Skip to main content

PyMovie

PyMovie is a simple (hopefully) application for extracting lightcurves from occultation videos.

It is specially designed to be robust in both star tracking and data extraction when the video has been disturbed by wind-shake.

The name was chosen out of respect and deference to LiMovie, a pioneer application published many years ago. This application has fewer ‘bells and whistles’ than LiMovie and so should be easier to use for a newbie.

Installing

Windows: download the executable (easiest)

Windows users can skip the Python toolchain entirely. Go to the latest release page and download PyMovie.exe from the Assets section. Double-click to run — no installation, no Python setup required. The executable bundles its own Python runtime and all dependencies.

The first activation will take extra time because it will be downloading the proper version of Python and all the other dependencies. Subsequent activations will only tkae a few seconds.

To update later, just download the newer PyMovie.exe from the release page and replace the old one.

If you’d rather run from source (all platforms), follow the uv-based instructions below.

Installing from source (any platform)

PyMovie uses uv to manage its Python environment. You do not need Python pre-installed — uv will automatically download the correct version (3.10) on first run.

Step 1. Install uv (one line, user-scope, no admin rights required).

Windows, in PowerShell:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS or Linux, in a terminal:

curl -LsSf https://astral.sh/uv/install.sh | sh

Close and reopen your terminal afterwards so the new uv command is on your PATH.

Step 2. Get the PyMovie source. Either clone with git:

git clone https://github.com/bob-anderson-ok/pymovie.git
cd pymovie

or download the repository as a ZIP from the GitHub page, unzip it, and cd into the extracted folder.

Step 3. Launch PyMovie:

uv run pymovie

On first run, uv downloads Python 3.10 (if not already present), installs the pinned dependencies from uv.lock into a local .venv folder, and opens the PyMovie window. Subsequent runs are near-instant.

Updating

To pick up a new PyMovie release:

git pull
uv run pymovie

uv automatically re-syncs the environment whenever uv.lock has changed, so there is nothing else to do.

AVI/AAV to FITS

After opening a video and loading or training its OCR timestamp profile, use Timestamp -> Convert AVI/AAV to FITS. Choose an existing output folder in the folder dialog. It starts at fits_converted for full frames or fits_converted_fields for field images when those folders exist; otherwise it starts in the source video’s folder. You can create a new folder in the dialog. The confirmation lists the target folder and warns before replacing matching frame- or field- FITS files. Other FITS files are preserved.

AAV conversion preserves the reader’s 16-bit pixel values. Full-frame exposure comes from AAV frame metadata where available, with the effective frame rate as a fallback. Integrated AAV recordings use full-frame output only.

Tests

Run the regression tests from the repository root:

uv run python -m unittest discover -s tests -v

The tests cover FITS timestamp and exposure headers, conversion cancellation, and AAV reader behavior using generated data.

AVI codecs

If OpenCV cannot decode an AVI, PyMovie tries its packed RV24 reader and then PyAV/FFmpeg. Install PyAV in the environment created by uv to enable that second fallback:

uv pip install av

The reader regression tests create short RV24 and lossless FFV1 videos in temporary directories. Run all of them with:

uv run --with av python -m unittest discover -s tests -v

ADV/AAV on Apple Silicon

Adv2 1.2.0 bundles an Intel-only macOS library. After installing the Python dependencies, Apple Silicon users can build the native reader with:

uv run python scripts/build_advcore_macos.py

This requires Git and Xcode Command Line Tools (xcode-select --install). The script builds the official ADVCore source at a pinned revision for ARM64, keeps a backup of the original library, and installs it in the active Python environment. Repeat this step after reinstalling Adv2.

Tests

Run the OCR pickle compatibility regression tests from the repository root:

uv run python -m unittest discover -s tests -v

The tests cover NumPy 1.x and 2.x array module paths, corrupted input, and loading OCR templates from the observation folder or application folder. Fixtures are generated in temporary directories; existing OCR files are not modified.

Troubleshooting

  • “uv: command not found” — close and reopen your terminal, or follow the PATH instructions printed by the uv installer.

  • Windows SmartScreen warning on the uv installer — click More info → Run anyway. The installer is published by Astral.

  • Corporate proxy / firewall issues — uv honours standard HTTPS_PROXY and HTTP_PROXY environment variables.

Metadata

Release files for pymovie 4.2.9

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

Source distribution (sdist)

Source distribution for pymovie 4.2.9
File Size Uploaded Provenance Actions
pymovie-4.2.9.tar.gz 18.2 MB Without provenance Details for pymovie-4.2.9.tar.gz

Built distribution (wheel)

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

Total release size: 36.4 MB

Release files / pymovie-4.2.9.tar.gz

Download URL pymovie-4.2.9.tar.gz
Size 18.2 MB
Tags Source
SHA-256 checksum
How to use checksums
c3f6a18d429aecc49e0251ed3d747aff332fd78fbc9bd97f61ded2f23e77aaf9
BLAKE2b-256 checksum
How to use checksums
39d3f1623e1dbb41f6878c49a03ddc767079bf7ad657d23a2ae8d223386e3bef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pymovie-4.2.9-py3-none-any.whl

Download URL pymovie-4.2.9-py3-none-any.whl
Size 18.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
ed65965929981cd4cc17278848a20b19648b29828efd65e0f3cc2d1b67efad9d
BLAKE2b-256 checksum
How to use checksums
2d956b44fc45d43d349ce3e38725bb63e06124b93efda428c0485da22adacb86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for pymovie 4.2.9

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

4.2.9 This release

2 release files No provenance

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