/django-cc

Django Contributing Commons (CC)

Primary LanguagePythonThe UnlicenseUnlicense

Django Contributing Commons (CC)

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.

Preamble

This project aims to provide confidence and convenience for both contributors and maintainers.

Goals

  • Early on feedback and a shorter feedback loop.
  • High and highly sustainable code quality.

How to join

We have created a migration guide explaining how to adapt your project to support Django-CC.

Contribution Guide

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.

Contents

  1. Quick Start Guide
  2. Code of Conduct
  3. Code Style
  4. Documentation
  5. Git
  6. Releases

Tools

The tool belt consists of a set of tools and configuration files that ensure contributions to be aligned with the contribution guide.

DCC

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

DCC for maintainers

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

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

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

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

pydocstyle checks doc strings with their compliance with PEP 257.

pre-commit

pre-commit is a framework for managing and maintaining multi-language pre-commit hooks. [4]