# Contributing

:tada: Thanks for taking the time to contribute! :tada:

## Reporting Issues

If you would like to report a bug, request a new feature or enhancement, follow [this link](https://github.com/protectai/llm-guard/issues/new/choose).

## Submitting Changes

1. Fork the repository on GitHub.
2. Make the changes to your forked repository.
3. When you are finished making changes or improvements, create a pull request from your forked repository to our original repository.
4. The core team will review your pull request and provide feedback.

## Project Setup

```bash
# clone the repo
git clone -b dev https://github.com/protectai/llm-guard.git
cd llm-guard

# create a virtual environment
python -m venv venv
source venv/bin/activate

# install the repo
python -m pip install ".[dev]"

# download SpaCy model
python -m spacy download en_core_web_trf
```

## Testing

Our project uses [pytest](https://docs.pytest.org/en/latest/) for testing. Make sure that all tests pass before you submit a pull request.

```bash
python -m pytest --exitfirst --verbose --failed-first --cov=.
python -m coverage run -m pytest .
```

## Code Style

We use `black` code style.

You can run `pre-commit run --all-files` to run all linters.

## Documentation

If you are adding a new feature or changing the existing functionality, please include corresponding changes in the documentation.

Thank you for making our project better. We appreciate your effort and look forward to your contribution!