## Developer FAQ ### How to maintain the Requirements File (`requirements.txt`)? The canonical list of installation requirements (including development requirements) is maintained in the [`setup.py`](setup.py) file. The Requirements File ([`requirements.txt`](requirements.txt)) file must be kept in sync with that list. To to automatically generate or update `requirements.txt` based on `setup.py`, run [`pip-tools`](https://github.com/jazzband/pip-tools)’s `pip-compile`: ```sh make generate_requirements_file ``` **Warning:** Due to [limitations](https://github.com/jazzband/pip-tools/issues/908) in `pip-tools`, the same workflow can not be used for generating a `dev-requirements.txt` file, and requirements can not be declared in a `setup.cfg` file. ### How to install modules required for development? ```sh make install_dev ``` ### How to run tests? From the project root directory, execute the following command: ```sh make test ``` ### How to run a code formatter? This project requires using [Black](https://black.readthedocs.io/) as a code formatter. From the project root directory, execute the following command to show what must be reformatted: ```sh make check_code_format ``` Execute the following command to format the code: ```sh make format_code ``` ### How to run a linter? This project requires using [Flake8](https://flake8.pycqa.org/) as a code linter. From the project root directory, execute the following command to show what must be corrected: ```sh make lint ```