Contributor Guide
Overview¶
You will need to set up a Python environment to develop ReactPy-Django.
Note
Looking to contribute features that are not Django specific?
Everything within the reactpy-django repository must be specific to Django integration. Check out the ReactPy Core documentation to contribute general features such as components, hooks, and events.
Creating a development environment¶
If you plan to make code changes to this repository, you will need to install the following dependencies first:
Once you finish installing these dependencies, you can clone this repository:
git clone https://github.com/reactive-python/reactpy-django.git
cd reactpy-django
Executing test environment commands¶
By utilizing hatch, the following commands are available to manage the development environment.
Tests¶
| Command | Description | 
|---|---|
| hatch test | Run Python tests using the current environment's Python version | 
| hatch test --all | Run tests using all compatible Python versions | 
| hatch test --python 3.9 | Run tests using a specific Python version | 
| hatch test --include "django=5.1" | Run tests using a specific Django version | 
| hatch test -k test_object_in_templatetag | Run only a specific test | 
| hatch test --ds test_app.settings_multi_db | Run tests with a specific Django settings file | 
| hatch run django:runserver | Manually run the Django development server without running tests | 
What other arguments are available to me?
The hatch test command is a wrapper for pytest. Hatch "intercepts" a handful of arguments, which can be previewed by typing hatch test --help.
Any additional arguments in the test command are directly passed on to pytest. See the pytest documentation for what additional arguments are available.
Linting and Formatting¶
| Command | Description | 
|---|---|
| hatch fmt | Run all linters and formatters | 
| hatch fmt --check | Run all linters and formatters, but do not save fixes to the disk | 
| hatch fmt --linter | Run only linters | 
| hatch fmt --formatter | Run only formatters | 
| hatch run javascript:check | Run the JavaScript linter/formatter | 
| hatch run javascript:fix | Run the JavaScript linter/formatter and write fixes to disk | 
| hatch run python:type_check | Run the Python type checker | 
Configure your IDE for linting
This repository uses hatch fmt for linting and formatting, which is a modestly customized version of ruff.
You can install ruff as a plugin to your preferred code editor to create a similar environment.
Documentation¶
| Command | Description | 
|---|---|
| hatch run docs:serve | Start the mkdocsserver to view documentation locally | 
| hatch run docs:build | Build the documentation | 
| hatch run docs:linkcheck | Check for broken links in the documentation | 
| hatch fmt docs --check | Run linter on code examples in the documentation | 
Environment Management¶
| Command | Description | 
|---|---|
| hatch build --clean | Build the package from source | 
| hatch env prune | Delete all virtual environments created by hatch | 
| hatch python install 3.12 | Install a specific Python version to your system | 
Check out Hatch for all available commands!
This documentation only covers commonly used commands.
You can type hatch --help to see all available commands.