Thank you for considering contributing to Evidently!
We welcome both code and non-code contributions. You can:
- Report a bug
- Improve documentation
- Submit a bug fix
- Propose a new feature or improvement
- Contribute a new feature or improvement
- Test Evidently
Here is the general workflow:
- Fork the Evidently repository
- Clone the repository
- Make the changes and commit them
- Push the branch to your local fork
- Make sure that all the tests are passing sucessfully
- Submit a Pull Request with described changes
- Evidently is under active development.
- We are happy to receive a Pull Request for bug fixes or new functions for any section of the library. If you need help or guidance, you can open an Issue first.
- The only exception is UI, because it is in the process of significant refactoring! If you want to contribute to UI, please first come to our Discord channel for a quick chat.
- We highly recommend that you open an issue, describe your contribution, share all needed information there and link it to a Pull Request.
- We evaluate Pull Requests taking into account: code architecture and quality, code style, comments & docstrings and coverage by tests.
git clone https://github.com/evidentlyai/evidently.git
cd /path/to/evidently_repo
python3 -m venv venv
. venv/bin/activate
cd C:\path\to\evidently_repo
py -m venv venv
.\venv\Scripts\activate
To use the cloned version in the virtual environment as a package, you need to install the package in the editable mode:
cd /path/to/evidently_repo
pip install -e .[dev]
cd C:\path\to\evidently_repo
pip install -e .[dev]
We use flake8 for code style checks.
flake8 src
We use mypy for object types checks.
# if you are running for the first time, use `mypy --install-types` instead
mypy
Currently, the project is not fully covered by unit tests, but we are going to add more soon and expect to receive PRs with some unit tests 🙂
pytest -v
Together with the unit tests we use smoke testing: we basically run all the notebooks from the examples. To run the tests, first convert all the notebooks to a python script, then download the required datasets and run the script to check that all computation is executed correctly. It can be done by using the following commands:
jupyter nbconvert --to script evidently/examples/*.ipynb --output-dir example_scripts
curl https://archive.ics.uci.edu/ml/machine-learning-databases/00275/Bike-Sharing-Dataset.zip -o Bike-Sharing-Dataset.zip &&
unzip Bike-Sharing-Dataset.zip -d Bike-Sharing-Dataset
python example_test.py
5. (first come to our Discord channel for a quick chat) Working with UI
To build UI, you need:
nodejs
andnpm
https://nodejs.org/en/download/yarn
https://yarnpkg.com/getting-started/install
One-time build:
cd ui
yarn
yarn build
Watched build (any changes to the UI source files will be automatically recompiled):
cd ui
yarn
yarn watch