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.

After participants have voted in the web app, pull the results:

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

Tests

pytest

Releases

Releases follow SPEC-distribution. Until the public flip, .github/workflows/cli-release.yml is a dry run. It 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. Nothing goes to PyPI.

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.1.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.1.0
File Size Uploaded Provenance Actions
mvote-0.1.0.tar.gz 14.4 kB With provenance Details for mvote-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 28.2 kB

Release files / mvote-0.1.0.tar.gz

Download URL mvote-0.1.0.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6495df3c4cac1b60b442d81dff4b83a467c3661d6889b6f1fa30afa995ad3911
BLAKE2b-256 checksum
How to use checksums
582bef4e541755402c3ef6f0673663c157b1e541314326405b247db869ce6d95
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.1.0-py3-none-any.whl

Download URL mvote-0.1.0-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
44ec014a7099c539a151a2781f20b4a0e03c93f8afa5123f35bb1c4f774d4135
BLAKE2b-256 checksum
How to use checksums
4cf445f7af111b5137889fd549b04fe6bc7475259380dbb18415365d6eef5a2a
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.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.

Select from 2 files

Attestation for mvote-0.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 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.1.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