Skip to main content

mvote (command line tool)

A Python command line tool that creates mVote voting sessions ("boards") from a CSV or JSON file of items.

Install for development

cd cli
pip install -e ".[dev]"

Usage

mvote create --config ../examples/chks_example.json --title "Week 3"

This prints the board definition as JSON, or writes it to a file with --out. It doesn't touch any backend.

Publish a session to Firebase

Add --publish to also write the board to Firestore and print a link and QR code you can share:

mvote create --config ../examples/chks_example.json --title "Week 3" --publish

Publishing sets every vote count to zero, so the tool won't publish over a board that already exists. Choose another --board-id, or add --overwrite if you mean to replace the board and start its counts again.

This needs a Firebase project with Firestore turned on. Sign the tool in with a service account key. In the Firebase console, go to Project settings, then Service accounts, then Generate new private key. Then set GOOGLE_APPLICATION_CREDENTIALS to the downloaded JSON file. Never commit this file to the repo.

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/serviceAccountKey.json

The link uses a placeholder domain until you tell the tool where the web app lives. Pass --base-url or set MVOTE_WEBAPP_URL. Use --qr-out path.png to save the QR code as an image instead of printing it.

During a session, mvote status --board-id <id> shows how many participants joined, how many tapped "I'm done voting", and how many dots are placed.

When the session ends, close it to new votes and pull the results:

mvote close --board-id <id>
mvote results --board-id <id> --out results.csv

mvote reopen --board-id <id> lets a closed board take votes again. Closing and reopening rely on the closed check in firestore.rules, so deploy the current rules (firebase deploy --only firestore:rules) together with the current web app.

Tests

pytest

Releases

Releases follow SPEC-distribution. Every run of .github/workflows/cli-release.yml builds the sdist and wheel, runs twine check --strict and scripts/check-cli-release.py, installs the wheel, and keeps the files as a workflow artifact. A v<version> tag also publishes to PyPI through trusted publishing (OIDC), with no stored token, while the repository variable PYPI_PUBLISH is true. PyPI never accepts the same version twice, so bump version before tagging.

cli/LICENSE and cli/NOTICE are copies of the root files, so that both the wheel and installs from GitHub include them. After you edit either root file, run python scripts/check-cli-release.py --fix; the check fails while the copies differ. Release tags take the form v<version> and must match version in pyproject.toml.

Metadata

Release files for mvote 0.2.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 mvote 0.2.0
File Size Uploaded Provenance Actions
mvote-0.2.0.tar.gz 17.0 kB With provenance Details for mvote-0.2.0.tar.gz

Built distribution (wheel)

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

Total release size: 31.8 kB

Release files / mvote-0.2.0.tar.gz

Download URL mvote-0.2.0.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9ce2d11542176832cb4cc46856bddbd5d3ee938f05ef359c8c4d6daefda75743
BLAKE2b-256 checksum
How to use checksums
68a626aa874c2f8d1c7a586437251c3a420c62f6b05d708b61fbcd1c47b33faa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 14, 2026.

Transparency log

Release files / mvote-0.2.0-py3-none-any.whl

Download URL mvote-0.2.0-py3-none-any.whl
Size 14.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
379441922b9ab65b3564132de893f3c272a866a7b1e1d04dc3dd0c27fa57f1b3
BLAKE2b-256 checksum
How to use checksums
4fe9ded885a10d47b5867aa14813c90d636ffa991e77baccc99a8c0beb3b52e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 14, 2026.

Transparency log

Security for mvote 0.2.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.

Select from 2 files

Attestation for mvote-0.2.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 Nov 14, 2026.

Transparency log

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

0.2.0 This release

2 release files Full 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