This is an old revision of the document!
Table of Contents
Python development standards
This page documents the coding standards, tools and procedure that the lab applies to its python projects.
Code Styling guide
Python projects should strictly follow PEP8.
Tools
The following tools can aid you to keep your styling on point:
Flake8
Flake8 is a code checker, it will check python files and raise errors and warnings when code breaks PEP8 or if there is a syntax error.
To install:
apt-get install flake8
Usage:
flake8 path/to/code/
yapf
Yet another python formatter (yapf) is a code formatter, a program that reformat code to comply with a style guide (like PEP8 which is the default style). Running this over your python project will clear most PEP8 compliance errors.
To install:
apt-get install yapf3
Usage:
yapf3 -ir path/to/code_dir
or
yapf3 -i path/to/code/file.py
Project Layout
cookiecutter
cookiecutter is a command-line utility that creates projects from cookiecutters (project templates). E.g. Python package projects, jQuery plugin projects.
To install:
apt-get install cookiecutter
Arcos template for python is hosted in this repo, to create a new project run:
cookiecutter https://github.com/arcoslab/arcos-python-cookiecutter
after the initial clone you can other new repos refering to the cookicutter by name:
cookiecutter arcos-python-cookiecutter
Python3 Migration
The lab have some Python 2 repos that need to migrated to Python3. The process will be as follow:
- Migrate all repos one by one to support both python 2 and 3 from the same file
- After all repos are migrated we will drop python 2 support for good
For each repo the following process will be applied:
- An issue to track the repo's migration progress will be opened
- Open a new py3stage1 branch
- Using futurize apply stage1 changes to all files
- Open a pull request and have another member check the changes.
- Tag the pre-stage1 release so people can easily use that if an issue raises
- Merge the changes to master, rebase all other branches from master and resolve merge conflicts
- Test the changes, this is probably going to be manual since most repos have no unit tests. This may be a good time to write some.
- Open a new py3stage2 branch.
- Repeat the process for stage1, testing both for python2 and python3
- Check everything twice
- Close the issue
Issues
Any problems encountered due to migration should be reported with a github issue on the corresponding repo.
Progress tracking
To see progress please view the following project tracker on github