BitVector
The BitVector.py module is for a memory-efficient packed representation of bit
vectors and for the processing of such vectors.
If you wish, you can execute the code in BitVector.py directly in this
directory prior to the installation of the module. This will execute all of the
example code in the module file.
To see a working example of the BitVector module, see the file:
This is a fork from Avi Kak's BitVector 3.5.0.
Development
This project uses uv for dependency management
and pre-commit to enforce code quality and
conventional commit messages.
After cloning the repository, set up the development environment and register both pre-commit and commit-msg git hooks:
uv sync
uv run pre-commit install --hook-type pre-commit --hook-type commit-msg
To execute the automated test suite and check code coverage:
uv run pytest
To run coverage without benchmark tests and generate an HTML report:
uv run pytest --benchmark-skip --cov-report=html
To continuously run adaptive, coverage-guided property-based fuzzing on the
hypothesis test suite (tests/test_properties.py):
uv run hypothesis fuzz tests/test_properties.py
Releasing
Releases are automated via GitHub Actions. We strictly adhere to Semantic Versioning 2.0.0.
Release Process
To trigger a new package build and release:
- Bump Version: Update the version string in
pyproject.toml.- For final releases, use
X.Y.Z(e.g.,1.0.0). - For release candidates, append
-rc.N(e.g.,1.0.0-rc.1,1.0.0-rc.2).
- For final releases, use
- Commit and Push: Push the version change to
main(typically via a pull request). - Tag and Push: Create and push a git tag matching the version, prefixed
with a
v:# Example for a release candidate git tag v1.0.0-rc.1 git push origin v1.0.0-rc.1 # Example for a final release git tag v1.0.0 git push origin v1.0.0
Release Workflow Execution
The Release workflow is triggered by tags matching v[0-9]*.[0-9]*.[0-9]*. It
executes the following steps:
- Verification: Runs the test suite to ensure the package builds cleanly.
- Build: Compiles package wheels and source distributions using
uv build. - Publish to PyPI: Publishes the package to PyPI (requires PyPI Trusted
Publishing setup).
- Prerelease versions (like
v1.0.0-rc.1) are published as pre-releases on PyPI.
- Prerelease versions (like
- GitHub Release: Creates a GitHub Release, uploads the built artifacts
(
dist/*), and auto-generates release notes.- Prerelease tags (containing
-rc,-beta,-alpha, or-pre) are automatically marked as Pre-release on GitHub.
- Prerelease tags (containing
Release files for bitvector-modern 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bitvector_modern-0.0.6.tar.gz | 168.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bitvector_modern-0.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 187.8 kB
Release files / bitvector_modern-0.0.6.tar.gz
| Download URL | bitvector_modern-0.0.6.tar.gz |
|---|---|
| Size | 168.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b559cb7ce188813c3207f77a5d811aa091e8a94add84be9a4ef9c220290c7cb9
|
|
BLAKE2b-256 checksum How to use checksums |
ee462db6fbffd1d02a9df1c0d0e9e03cb634556412dd25403d015d7e9198bb8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Release files / bitvector_modern-0.0.6-py3-none-any.whl
| Download URL | bitvector_modern-0.0.6-py3-none-any.whl |
|---|---|
| Size | 19.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
98e358d48e94d6d4ae295917ae04b8a3fc6bd84ba92ffe080a8af3b7626e73b7
|
|
BLAKE2b-256 checksum How to use checksums |
41a16055dd67da760c33f8c56bce84da5dd9c6380ba2adbc00fc9cb59da37013
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|