Contributing Guide
October 9, 2024 · View on GitHub
Accessing the project
First clone the project:
git clone https://github.com/IBM/unitxt.git
Then, navigate to the project directory:
cd unitxt
Setting up the project
First, create a virtual environment:
python -m venv unitxt-venv
Then, activate the virtual environment:
source unitxt-venv/bin/activate
If the above command does not work because the bin directory does not exist, use this instead:
source unitxt-venv/Scripts/activate
Then, install the project:
pip install -e ".[dev]"
Running pre-commit before committing
First, install the pre-commit hooks:
pre-commit install
To run pre-commit before committing:
pre-commit run --all-files
Or simply run:
make pre-commit
This will run the pre-commit hooks on all files.
The pre-commit hooks will:
- Check for any linting errors
- Check for any formatting errors
- Check for any security vulnerabilities
- Check for spelling errors
- Verify you used relative imports inside src/ directory
- Verify you used library imports outside src/ directory
Running Tests
First, install the project with the test dependencies:
pip install -e ".[tests]"
To run a specific test:
python -m unittest tests.test_<module>
To run all the tests:
python -m unittest
Repo principles:
Git
Legal
We have tried to make it as easy as possible to make contributions. This applies to how we handle the legal aspects of contribution. We use the same approach - the Developer's Certificate of Origin 1.1 (DCO) - that the Linux® Kernel community uses to manage code contributions.
We simply ask that when submitting a patch for review, the developer must include a sign-off statement in the commit message.
Here is an example Signed-off-by line, which indicates that the submitter accepts the DCO:
Signed-off-by: John Doe john.doe@example.com You can include this automatically when you commit a change to your local git repository using the following command:
git commit -s
Commit
Always commit with a good commit message and sign off:
Example:
git commit -s
Push
Push into a new branch and open a PR.
Example:
git push origin main:<my-new-branch-name>
Merge your PR to main
Use squash and merge to merge your PR to main.
Structure
Layout
The layout of the repo is src layout