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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 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.