os-ken/CONTRIBUTING.rst
IWASE Yusuke 83650576e4 travis: Introduce autopep8 test
This patch add a new test using "autopep8" to keep codes reformatted
easily by using Python tool.

Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-12-17 19:27:46 +09:00

3.9 KiB

How to Get Your Change Into Ryu

Submitting a change

Send patches to ryu-devel@lists.sourceforge.net. Please don't use "Pull Request" on GitHub. We expect you to send patches in "git-format-patch" style.

# "N" means the number of commits to be included
$ git format-patch -s HEAD~N

# To add cover (e.g., [PATCH 0/X]), specify "--cover-letter" option
$ git format-patch -s --cover-letter HEAD~N

# You can send patches by "git send-email" command
$ git send-email --to="ryu-devel@lists.sourceforge.net" *.patch

Please check your changes with autopep8, pycodestyle(pep8) and running unit tests to make sure that they don't break the existing features. The following command does all for you.

# Install dependencies of tests
$ pip install -r tools/test-requires

# Execute autopep8
# Also, it is convenient to add settings of your editor or IDE for
# applying autopep8 automatically.
$ autopep8 --recursive --in-place ryu/

# Execute unit tests and pycodestyle(pep8)
$ ./run_tests.sh

Of course, you are encouraged to add unit tests when you add new features (it's not a must though).

Python version and libraries

  • Python 2.7, 3.4, 3.5:

    Ryu supports multiple Python version. CI tests on Travis-CI is running on these versions.

  • standard library + widely used library:

    Basically widely used == OpenStack adopted. As usual there are exceptions. Or python binding library for other component.

Coding style guide

  • pep8:

    As python is used, PEP8 is would be hopefully mandatory for https://www.python.org/dev/peps/pep-0008/

  • pylint:

    Although pylint is useful for finding bugs, but pylint score not very important for now because we're still at early development stage. https://www.pylint.org/

  • Google python style guide is very helpful: http://google.github.io/styleguide/pyguide.html

  • Guidelines derived from Guido's Recommendations:

    Type Public Internal
    Packages lower_with_under
    Modules lower_with_under _lower_with_under

    Classes Exceptions

    CapWords CapWords

    _CapWords

    Functions lower_with_under() _lower_with_under()
    Global/Class Constants CAPS_WITH_UNDER _CAPS_WITH_UNDER
    Global/Class Variables lower_with_under _lower_with_under
    Instance Variables lower_with_under _lower_with_under (protected) or __lower_with_under (private)

    Method Names Function/Method Parameters Local Variables

    lower_with_under() lower_with_under lower_with_under

    _lower_with_under() (protected) or __lower_with_under() (private)

  • OpenStack Nova style guide: https://github.com/openstack/nova/blob/master/HACKING.rst

  • JSON files:

    Ryu source tree has JSON files under ryu/tests/unit/ofproto/json. They are used by unit tests. To make patches easier to read, they are normalized using tools/normalize_json.py. Please re-run the script before committing changes to these JSON files.

Reference

  • Python Essential Reference, 4th Edition [Amazon]
    • Paperback: 717 pages
    • Publisher: Addison-Wesley Professional; 4 edition (July 19, 2009)
    • Language: English
    • ISBN-10: 0672329786
    • ISBN-13: 978-0672329784
  • The Python Standard Library by Example (Developer's Library)
    • Paperback: 1344 pages
    • Publisher: Addison-Wesley Professional; 1 edition (June 11, 2011)
    • Language: English
    • ISBN-10: 0321767349
    • ISBN-13: 978-0321767349