diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..907b98dc --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,48 @@ +# Contributing to Rich + +This project welcomes contributions in the form of Pull Requests. For clear bug-fixes / typos etc. just submit a PR. For new features or if there is any doubt in how to fix a bug, you might want to open an issue prior to starting work, or email willmcgugan+rich@gmail.com to discuss it first. + +## Development Environment + +To start developing with Rich, first create a _virtual environment_ then run the following to install development requirements: + +``` +pip install -r requirements-dev.txt +poetry install +``` + +### Tests + +Run tests with the following command: + +``` +make tests +``` + +Or if you don't have make, run the following: + +``` +pytest --cov-report term-missing --cov=rich tests/ -vv +``` + +New code should ideally have tests and not break existing tests. + +### Type Checking + +Rich uses type annotations throughout, and `mypy` to do the checking. Run the following to type check Rich: + +``` +make typecheck +``` + +Or if you don't have `make`: + +``` +mypy -p rich --ignore-missing-imports --warn-unreachable +``` + +Please add type annotations for all new code. + +### Code Formatting + +Rich uses `black` for code formatting. I recommend setting up black in your editor to format on save.