Thanks for your interest in contributing! 🎉
EmotiGrad is a small, friendly project, and contributions of all kinds are welcome, whether that’s code, docs, tests, ideas, or new personalities.
You can help by:
- Adding new personalities
- Improving tests or documentation
- Fixing bugs
- Suggesting ideas or enhancements
- Improving examples or formatting
git clone https://github.com/smiley-maker/emotigrad.git
cd emotigrad
pip install -e ".[dev]"We recommend using a conda or virtual environment to manage dependencies.
To create a virtual environment on mac/linux:
python3 -m venv .venv
source .venv/bin/activateOn windows:
python -m venv venv
.\venv\Scripts\Activate.ps1We use:
blackfor formattingrufffor linting
Please run:
black .
ruff check .pytestPersonalities are simple callables with the signature:
def personality(loss: float, prev_loss: float | None, step: int) -> str | None:
...- Keep messages short and readable
- Avoid excessive logging
- Return
Nonewhen no message should be shown - Add a small test when possible
- Make it fun and personality driven
- Small, focused PRs are preferred
- Please include tests when adding new behavior
- Feel free to open a PR early and ask for feedback
- First-time contributors are very welcome! 🌱
Thanks for helping make EmotiGrad better — we’re glad you’re here! 💖