Local setup =========== These instructions work for \*nix systems. Python environment ------------------ #. Create a new Python 3.8+ virtual environment. Activate the venv. I use `virtualenvwrapper `_. For this example, let's create a virtual environment called ``cappr`` using Python's native ``venv``:: cd your/venvs python3 -m venv cappr source cappr/bin/activate python -m pip install wheel --upgrade pip #. ``cd`` to wherever you store projects, and clone the repo (or fork it and clone that) there:: cd your/projects git clone https://github.com/kddubey/cappr.git #. ``cd`` to the repo and install this package in editable mode, along with development requirements (after ensuring that your venv is activated!) :: cd cappr python -m pip install -e ".[dev]" pre-commit install IDE settings ------------ For VS Code, you should be prompted to install a few extensions (if you don't already have them) when you first launch this workspace. For other IDEs, set Python formatting to `ruff `_, and set the vertical line ruler to 88. Docstrings use the numpy format and start on a new line. Testing ------- From the repo home directory ``cappr``:: pytest A few small transformers and tokenizers will be downloaded to your computer. Sometimes I get worried about bigger code changes. So consider additionally testing statistical performance by running an appropriate demo in the repo's `demos `_. If you're changing anything about the algorithm, then report the changes in throughput or latency, and allocated and reserved CUDA memory. The `Banking 77 `_ demo is useful because it's challenging for CAPPr. Docs ---- To test changes to documentation, first locally build them from the repo home directory ``cappr`` via:: cd docs make html and then preview them by opening ``docs/build/html/index.html`` in your browser. After merging code to main, the official docs will be automatically built and published. Release ------- `Bump the version `_, update the `citation `_, and then `create a new release on GitHub `_. A new version of the package will then be automatically published on PyPI. Try to follow `semantic versioning `_ guidelines, even though I haven't been great at that so far.