The code must be compatible with the oldest supported version of python as given on the Installation guide page.
In code, like the implementation of ASE, we must not use the import * syntax. Import everything explicitly from exactly the place where it’s defined:
from ase.io import read, write
We distinguish between scripts and code. In your own scripts, it’s OK to use:
from ase.all import *
which will give you the most used symbols.
Please run pep8.py and pylint on your code before committing.
The rules for the Python part are almost identical to those used by the Docutils project:
Contributed code will not be refused merely because it does not strictly adhere to these conditions; as long as it’s internally consistent, clean, and correct, it probably will be accepted. But don’t be surprised if the “offending” code gets fiddled over time to conform to these conventions.
The project shall follow the generic coding conventions as specified in the Style Guide for Python Code and Docstring Conventions PEPs, summarized, clarified, and extended as follows:
Attention
Thus spake the Lord: Thou shalt indent with four spaces. No more, no less. Four shall be the number of spaces thou shalt indent, and the number of thy indenting shall be four. Eight shalt thou not indent, nor either indent thou two, excepting that thou then proceed to four. Tabs are right out.
Georg Brandl
- Get rid of as many break and continue statements as possible.
The pep8.py program is installed together with ASE tools/pep8.py. It will check the PEP8 conventions for you. Try:
$ pep8.py --help
Another method of enforcing PEP8 is using a tool such as autopep8.py. These tools tend to be very effective at cleaning up code, but should be used carefully and code should be retested after cleaning it. Try:
$ autopep8.py --help
Attention
There is a common issue with pep8 where spaces are added around the power operator. Code such as “x**2” should not be changed to “x ** 2”. This issue is not fixed in pep8 as of the time of this writing, but a small change to autopep8 has been effective to prevent this change.
A pylintrc trying to follow ASE Coding Conventions can be found here: doc/development/pylintrc
Run pylint on a single file like this:
[~]$ pylint mypythonfile.py
Run pylint on a module like this:
[~]$ pylint path/to/module/root/dir
Run:
$ epydoc --docformat restructuredtext --parse-only --show-imports -v dir