Django CC is an open tool belt making maintaining an contributing to Django packages a breeze.
It contains a standardized contributing guide as well as various tools to automate conform code contribution.
This project aims to provide confidence and convenience for both contributors and maintainers.
- Early on feedback and a shorter feedback loop.
- High and highly sustainable code quality.
We have created a migration guide explaining how to adapt your project to support Django-CC.
The contribution guide is the central part of the projects. All tools and example configurations aim to support following the contribution guide as easy as possible.
The tool belt consists of a set of tools and configuration files that ensure contributions to be aligned with the contribution guide.
Wo make things even easier we cooked up a little tool for you called dcc
.
It will set you up with just one simple command, so you can focus on implementing
that feature you've been thinking about.
To get started just install dcc
globally.
pip install dcc
If you want to get started to contribute to any package supporting Django Contributing Commons:
usage: dcc [-h] [-v] PACKAGE
positional arguments:
PACKAGE name of the pypi package
optional arguments:
-h, --help show this help message and exit
-v verbose mode (default: off)
So if you want to write a feature for django-select2
, just type:
dcc django-select2
Supporting DCC is easy, all you need to do is set the download_url
to you GitHub repository in your setup.py
file.
e.g.
setup(
name='dcc',
download_url='https://github.com/codingjoe/django-cc',
packages=find_packages(),
)
Make sure to put all your development requirements in the requirements-dev.txt
file.
EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs. [1]
EditorConfig enables contributors to align their code with the guideline while writing it.
The example file includes all file types defined in the contribution
including the isort
configuration.
isort your python imports for you so you don't have to. [2]
isort is configured in the pre-commit,
setup.cfg
and editorconfig
.
Flake8 is a wrapper around these tools: [3]
Additionally the setup.cfg
file make use of
pep8-naming, an Flake8 extension,
that checks for pep8 conform naming.
pydocstyle checks doc strings with their compliance with PEP 257.
pre-commit is a framework for managing and maintaining multi-language pre-commit hooks. [4]