imo-vmdb
imo-vmdb imports data from the Visual Meteor Database (VMDB) of the International Meteor Organization (IMO) into a relational SQL database.
The data is enriched with computed properties (radiant positions, sun/moon position and illumination) and validated for plausibility. The processed data is accessible via a public Python API, a REST interface, CLI commands, and a Web UI.
For full documentation see https://imo-vmdb.readthedocs.io/en/stable/.
Quick Start (Docker)
No Python required. Pull and run the web UI:
docker run --rm \
-p 8000:8000 \
-v ./data:/data \
-e IMO_VMDB_DATABASE_DATABASE=/data/vmdb.db \
ghcr.io/jankorichter/imo-vmdb
Open http://localhost:8000.
Developer Setup
Prerequisites: Python 3.10+, Poetry
git clone https://github.com/jankorichter/imo-vmdb.git
cd imo-vmdb
poetry install
poetry run python -m imo_vmdb
With documentation extras (required to build Sphinx docs):
poetry install --extras docs
Run the web UI and REST API locally:
IMO_VMDB_DATABASE_DATABASE=./data/vmdb.db poetry run python -m imo_vmdb web_server
Opens the control panel at http://localhost:8000; the REST API is available at http://localhost:8000/api/v1.
Test the production WSGI deployment:
The production setup uses Gunicorn with imo_vmdb.httpd:wsgi_app. To verify locally:
poetry install --extras web
IMO_VMDB_DATABASE_DATABASE=./data/vmdb.db \
poetry run gunicorn --workers 1 --threads 4 \
--bind 127.0.0.1:8000 "imo_vmdb.httpd:wsgi_app()"
Always use --workers 1 — see docs/api.rst for details.
Run the linter:
poetry run ruff check .
poetry run ruff format --check .
To auto-fix issues:
poetry run ruff check --fix .
poetry run ruff format .
Run the test suite:
poetry run pytest
No server needs to be started beforehand. The tests use Flask's built-in test client, which calls the application directly in-process — no network, no port. A temporary SQLite database is created automatically for each test run.
Build Docker image locally:
docker compose up --build
Release
Releases are triggered by pushing a version tag. The GitHub Actions workflows in
.github/workflows/ handle CI and publishing automatically:
tests.yml— runs lint and tests on every push to any branchpypi.yml— builds the package and publishes it to PyPI (version tags only)docker.yml— builds and pushes the Docker image to GitHub Container Registry (version tags only)
Before tagging, build and verify the package locally:
make # builds docs, then runs poetry build
Then tag and push:
git tag v1.x.y
git push origin v1.x.y
Metadata
Release files for imo-vmdb 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| imo_vmdb-2.1.0.tar.gz | 7.9 MB | With provenance | Details for imo_vmdb-2.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| imo_vmdb-2.1.0-py3-none-any.whl | Python 3 | none | any | Details for imo_vmdb-2.1.0-py3-none-any.whl |
Total release size: 15.8 MB
Release files / imo_vmdb-2.1.0.tar.gz
| Download URL | imo_vmdb-2.1.0.tar.gz |
|---|---|
| Size | 7.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b734a28af99f5fd316f89ca598c6a9c30f07acf54ae0284c3a2af5e8af8dae24
|
|
BLAKE2b-256 checksum How to use checksums |
b00c9831e747135ba292343bde002ce33b81b3bb65ddbbeee4d398aa357521b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 May 21, 2026.
Transparency logRelease files / imo_vmdb-2.1.0-py3-none-any.whl
| Download URL | imo_vmdb-2.1.0-py3-none-any.whl |
|---|---|
| Size | 7.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce4a19108adc3c4ca6de20380b9f35a4988743a647be2945ed7fa24ac5d127ae
|
|
BLAKE2b-256 checksum How to use checksums |
7e63801006229415d74c370508d09bd476e866b813e4ac77e9bfba0082ed877b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 May 21, 2026.
Transparency logSecurity for imo-vmdb 2.1.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for imo_vmdb-2.1.0.tar.gz
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 May 21, 2026.
Transparency logA 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.