|
| 1 | +================= |
| 2 | +Development Guide |
| 3 | +================= |
| 4 | + |
| 5 | +Some general guidelines regarding development in pytest for core maintainers and general contributors. Nothing here |
| 6 | +is set in stone and can't be changed, feel free to suggest improvements or changes in the workflow. |
| 7 | + |
| 8 | + |
| 9 | +Code Style |
| 10 | +---------- |
| 11 | + |
| 12 | +* `PEP-8 <https://www.python.org/dev/peps/pep-0008>`_ |
| 13 | +* `flake8 <https://pypi.python.org/pypi/flake8>`_ for quality checks |
| 14 | +* `invoke <http://www.pyinvoke.org/>`_ to automate development tasks |
| 15 | + |
| 16 | + |
| 17 | +Branches |
| 18 | +-------- |
| 19 | + |
| 20 | +We have two long term branches: |
| 21 | + |
| 22 | +* ``master``: contains the code for the next bugfix release. |
| 23 | +* ``features``: contains the code with new features for the next minor release. |
| 24 | + |
| 25 | +The official repository usually does not contain topic branches, developers and contributors should create topic |
| 26 | +branches in their own forks. |
| 27 | + |
| 28 | +Exceptions can be made for cases where more than one contributor is working on the same |
| 29 | +topic or where it makes sense to use some automatic capability of the main repository, such as automatic docs from |
| 30 | +`readthedocs <readthedocs.org>`_ for a branch dealing with documentation refactoring. |
| 31 | + |
| 32 | +Issues |
| 33 | +------ |
| 34 | + |
| 35 | +Any question, feature, bug or proposal is welcome as an issue. Users are encouraged to use them whenever they need. |
| 36 | + |
| 37 | +GitHub issues should use labels to categorize them. Labels should be created sporadically, to fill a niche; we should |
| 38 | +avoid creating labels just for the sake of creating them. |
| 39 | + |
| 40 | +Here is a list of labels and a brief description mentioning their intent. |
| 41 | + |
| 42 | + |
| 43 | +**Type** |
| 44 | + |
| 45 | +* ``type: backward compatibility``: issue that will cause problems with old pytest versions. |
| 46 | +* ``type: bug``: problem that needs to be addressed. |
| 47 | +* ``type: deprecation``: feature that will be deprecated in the future. |
| 48 | +* ``type: docs``: documentation missing or needing clarification. |
| 49 | +* ``type: enhancement``: new feature or API change, should be merged into ``features``. |
| 50 | +* ``type: feature-branch``: new feature or API change, should be merged into ``features``. |
| 51 | +* ``type: infrastructure``: improvement to development/releases/CI structure. |
| 52 | +* ``type: performance``: performance or memory problem/improvement. |
| 53 | +* ``type: proposal``: proposal for a new feature, often to gather opinions or design the API around the new feature. |
| 54 | +* ``type: question``: question regarding usage, installation, internals or how to test something. |
| 55 | +* ``type: refactoring``: internal improvements to the code. |
| 56 | +* ``type: regression``: indicates a problem that was introduced in a release which was working previously. |
| 57 | + |
| 58 | +**Status** |
| 59 | + |
| 60 | +* ``status: critical``: grave problem or usability issue that affects lots of users. |
| 61 | +* ``status: easy``: easy issue that is friendly to new contributors. |
| 62 | +* ``status: help wanted``: core developers need help from experts on this topic. |
| 63 | +* ``status: needs information``: reporter needs to provide more information; can be closed after 2 or more weeks of inactivity. |
| 64 | + |
| 65 | +**Topic** |
| 66 | + |
| 67 | +* ``topic: collection`` |
| 68 | +* ``topic: fixtures`` |
| 69 | +* ``topic: parametrize`` |
| 70 | +* ``topic: reporting`` |
| 71 | +* ``topic: selection`` |
| 72 | +* ``topic: tracebacks`` |
| 73 | + |
| 74 | +**Plugin (internal or external)** |
| 75 | + |
| 76 | +* ``plugin: cache`` |
| 77 | +* ``plugin: capture`` |
| 78 | +* ``plugin: doctests`` |
| 79 | +* ``plugin: junitxml`` |
| 80 | +* ``plugin: monkeypatch`` |
| 81 | +* ``plugin: nose`` |
| 82 | +* ``plugin: pastebin`` |
| 83 | +* ``plugin: pytester`` |
| 84 | +* ``plugin: tmpdir`` |
| 85 | +* ``plugin: unittest`` |
| 86 | +* ``plugin: warnings`` |
| 87 | +* ``plugin: xdist`` |
| 88 | + |
| 89 | + |
| 90 | +**OS** |
| 91 | + |
| 92 | +Issues specific to a single operating system. Do not use as a means to indicate where an issue originated from, only |
| 93 | +for problems that happen **only** in that system. |
| 94 | + |
| 95 | +* ``os: linux`` |
| 96 | +* ``os: mac`` |
| 97 | +* ``os: windows`` |
| 98 | + |
| 99 | +**Temporary** |
| 100 | + |
| 101 | +Used to classify issues for limited time, to help find issues related in events for example. |
| 102 | +They should be removed after they are no longer relevant. |
| 103 | + |
| 104 | +* ``temporary: EP2017 sprint``: |
| 105 | +* ``temporary: sprint-candidate``: |
| 106 | + |
| 107 | + |
| 108 | +.. include:: ../../HOWTORELEASE.rst |
0 commit comments