From 2e2851dc13d73352530dd4495c7e05603b2e520d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 23:38:38 +0200 Subject: Adding upstream version 2.1.2~dev0+20240219. Signed-off-by: Daniel Baumann --- docs/source/contributing/code.md | 124 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 docs/source/contributing/code.md (limited to 'docs/source/contributing/code.md') diff --git a/docs/source/contributing/code.md b/docs/source/contributing/code.md new file mode 100644 index 0000000..20ccb82 --- /dev/null +++ b/docs/source/contributing/code.md @@ -0,0 +1,124 @@ +# Contributing code + +## Basic requirements and standards + +- A [new ticket](http://dev.deluge-torrent.org/newticket) is required for bugs + or features. Search the ticket system first, to avoid filing a duplicate. +- Ensure code follows the [syntax and conventions](#syntax-and-conventions). +- Code must pass tests. See [testing](testing.md) document for + information on how to run and write unit tests. +- Commit messages are informative. + +## Pull request process: + +- Fork us on [GitHub](https://github.com/deluge-torrent/deluge). +- Clone your repository. +- Create a feature branch for your issue. +- Apply your changes: + - Add them, and then commit them to your branch. + - Run the tests until they pass. + - When you feel you are finished, rebase your commits to ensure a simple + and informative commit log. +- Create a pull request on GitHub from your forked repository. + - Verify that the tests run by [Travis-ci](https://travis-ci.org/deluge-torrent/deluge) + are passing. + +## Syntax and conventions + +### Code formatting + +We use two applications to automatically format the code to save development +time. They are both run with [pre-commit]. + +#### Black + +- Python + +#### Prettier + +- JavaScript +- CSS +- YAML +- Markdown + +### Common + +- Line length: `79` chars. +- Indent: `4 spaces`, no tabs. +- All code should use `'single quotes'`. + +### Python + +We follow [PEP8](http://www.python.org/dev/peps/pep-0008/) and +[Python Code Style](http://docs.python-guide.org/en/latest/writing/style/) +which is adhered to with [Black]. + +- Code '''must''' pass [Black], [flake8] and [isort] source code checkers. + (Optionally [Pylint]) + + flake8 deluge + isort -rc -df deluge + pylint deluge + pylint deluge/plugins/\*/deluge/ + +- Using the [pre-commit] application can aid in identifying issues while + creating git commits. + +#### Strings and bytes + +To prevent bugs or errors in the code byte strings (`str`) must be decoded to +strings (Unicode text strings, `unicode`) on input and then encoded on output. + +_Notes:_ + +- PyGTK/GTK+ will accept `str` (UTF-8 encoded) or `unicode` but will only return + `str`. See [GTK3 Unicode] docs. +- There is a `bytearray` type which enables in-place modification of a string. + See [Python Bytearrays](http://stackoverflow.com/a/9099337/175584) +- Python 3 renames `unicode` to `str` type and byte strings become `bytes` type. + +### JavaScript + +- Classes should follow the Ext coding style. +- Class names should be in !CamelCase +- Instances of classes should use camelCase. + +### Path separators + +- All relative path separators used within code should be converted to posix + format `/`, so should not contain `\` or `\\`. This is to prevent confusion + when dealing with cross-platform clients and servers. + +### Docstrings + +All new docstrings must use Napoleon +[Google Style](http://www.sphinx-doc.org/en/stable/ext/napoleon.html) +with old docstrings eventually converted over. + +Google Style example: + + def func(arg): + """Function purpose. + + Args: + arg (type): Description. + + Returns: + type: Description. If the line is too, long indent next + line with three spaces. + """ + return + +See complete list of [supported headers][napoleon sections]. + +Verify that the documentation parses correctly with: + + python setup.py build_docs + +[pre-commit]: http://pre-commit.com/ +[flake8]: https://pypi.python.org/pypi/flake8 +[isort]: https://pypi.python.org/pypi/isort +[pylint]: http://www.pylint.org/ +[black]: https://github.com/python/black/ +[gtk3 unicode]: http://python-gtk-3-tutorial.readthedocs.org/en/latest/unicode.html +[napoleon sections]: http://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html#docstring-sections -- cgit v1.2.3