Contributing¶
How to contribute¶
Dependencies¶
We use uv to manage the dependencies and just as a command runner.
To install them you would need to run uv sync --all-groups --all-extras
command or:
To install just run:
uv tool install rust-just
To install project dependencies run:
just install
venv¶
To activate your virtualenv
run source .venv/bin/activate.
Compilation with mypyc, building a wheel¶
We also ship some optimized C-extensions together with our Python code. If you want to build them run:
just mypyc
This will build dmr.compiled extensions
with mypyc.
One magic command¶
After you installed the deps, run just test to run everything we have!
To see all available commands:
just
Tests¶
To run tests:
just unit
To run linting:
just lint
These steps are mandatory during the CI.
Documentation¶
To build docs locally:
just docs
If docs build fails on macOS with multiprocessing-related errors while running examples, force the start method explicitly:
DMR_SPAWN_METHOD=spawn just docs
Submitting your code¶
We use trunk based
development (we also sometimes call it wemake-git-flow).
What is the point of this method?
We use protected
masterbranch, so the only way to push your code is via pull requestWe use issue branches: to implement a new feature or to fix a bug create a new branch named
issue-$TASKNUMBERThen create a pull request to
masterbranchWe use
git tags to make releases, so we can track what has changed since the latest release
So, this way we achieve an easy and scalable development process which frees us from merging hell and long-living branches.
In this method, the latest version of the app is always in the master branch.
Before submitting¶
Before submitting your code please do the following steps:
Run
just testto make sure everything was working beforeAdd any changes you want
Add tests for the new changes
Edit documentation if you have changed something significant
Update
CHANGELOG.mdwith a quick summary of your changesRun
just testagain to make sure it is still working
Translations¶
We use Django’s built-in i18n system. Translation files live in dmr/locale/.
Contributing a new language¶
Generate a
.pofile for your locale:uv run django-admin makemessages --locale <lang>Fill in the
msgstrvalues indmr/locale/<lang>/LC_MESSAGES/django.poCompile and validate all translations:
just translationsCommit both
django.poanddjango.mofiles
Improving an existing translation¶
Edit
dmr/locale/<lang>/LC_MESSAGES/django.poCompile and validate:
just translationsCommit both
django.poanddjango.mofiles
Other help¶
You can contribute by spreading a word about this library. It would also be a huge contribution to write a short article on how you are using this project. You can also share your best practices with us.