Developer conventions

Commit checklist

Before every commit you must:

You can run all syntax check and all test with a single command:

$ ./pre-commit-check.sh

Unit tests

Un-tested code is broken code.

For every feature you add to the codebase you must also add tests for it.

You can run tests like this:

$ bin/test -s collective.table

Syntax validation

All Python source code should be PEP-8 valid and checked for syntax errors. Tools for checking this are pep8 and pyflakes.

If possible make your editor run pep8 and pyflakes on your current file every time you save it. Useful links:

Alternatively you can use these two commands to check style manually:

$ bin/pyflakes collective/table
$ bin/pep8 collective/table

Changelog

We track all feature-level changes to code inside docs/HISTORY.txt. Examples:

  • added feature X
  • removed Y
  • fixed bug Z

Sphinx documentation

Un-documented code is broken code.

For every feature you add to the codebase you must also add documentation for it in docs/sphinx/.

After adding documentation, re-build Sphinx and check how it is displayed:

$ bin/sphinxbuilder
$ open docs/html/index.html

Sorting imports

As a stylistic guide: Imports of code from other modules should always be alphabetically sorted with no empty lines between imports. The only exception to this rule is to keep one empty line between a group of from x import y and a group of import y imports.

BAD

import os

from plone.app.testing import login
from collective.table.tests.base import TableIntegrationTestCase

GOOD

from collective.table.tests.base import TableIntegrationTestCase
from plone.app.testing import login

import os

Multiple imports

  1. Don’t use * to import everything from a module.
  2. Don’t use commas to import multiple stuff on a single line.
  3. Don’t use relative paths.

BAD

from collective.table.local import *
from collective.table.local import add_row, delete_rows
from .local import update_cell

GOOD

from collective.table.local import add_row
from collective.table.local import delete_rows
from collective.table.local import update_cell

Project Versions

Table Of Contents

Previous topic

Definitions of basic terms

Next topic

API

This Page