109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
| =================
 | |
| Development Guide
 | |
| =================
 | |
| 
 | |
| Some general guidelines regarding development in pytest for core maintainers and general contributors. Nothing here
 | |
| is set in stone and can't be changed, feel free to suggest improvements or changes in the workflow.
 | |
| 
 | |
| 
 | |
| Code Style
 | |
| ----------
 | |
| 
 | |
| * `PEP-8 <https://www.python.org/dev/peps/pep-0008>`_
 | |
| * `flake8 <https://pypi.python.org/pypi/flake8>`_ for quality checks
 | |
| * `invoke <http://www.pyinvoke.org/>`_ to automate development tasks
 | |
| 
 | |
| 
 | |
| Branches
 | |
| --------
 | |
| 
 | |
| We have two long term branches:
 | |
| 
 | |
| * ``master``: contains the code for the next bugfix release.
 | |
| * ``features``: contains the code with new features for the next minor release.
 | |
| 
 | |
| The official repository usually does not contain topic branches, developers and contributors should create topic
 | |
| branches in their own forks.
 | |
| 
 | |
| Exceptions can be made for cases where more than one contributor is working on the same
 | |
| topic or where it makes sense to use some automatic capability of the main repository, such as automatic docs from
 | |
| `readthedocs <readthedocs.org>`_ for a branch dealing with documentation refactoring.
 | |
| 
 | |
| Issues
 | |
| ------
 | |
| 
 | |
| Any question, feature, bug or proposal is welcome as an issue. Users are encouraged to use them whenever they need.
 | |
| 
 | |
| GitHub issues should use labels to categorize them. Labels should be created sporadically, to fill a niche; we should
 | |
| avoid creating labels just for the sake of creating them.
 | |
| 
 | |
| Here is a list of labels and a brief description mentioning their intent.
 | |
| 
 | |
| 
 | |
| **Type**
 | |
| 
 | |
| * ``type: backward compatibility``: issue that will cause problems with old pytest versions.
 | |
| * ``type: bug``: problem that needs to be addressed.
 | |
| * ``type: deprecation``: feature that will be deprecated in the future.
 | |
| * ``type: docs``: documentation missing or needing clarification.
 | |
| * ``type: enhancement``: new feature or API change, should be merged into ``features``.
 | |
| * ``type: feature-branch``: new feature or API change, should be merged into ``features``.
 | |
| * ``type: infrastructure``: improvement to development/releases/CI structure.
 | |
| * ``type: performance``: performance or memory problem/improvement.
 | |
| * ``type: proposal``: proposal for a new feature, often to gather opinions or design the API around the new feature.
 | |
| * ``type: question``: question regarding usage, installation, internals or how to test something.
 | |
| * ``type: refactoring``: internal improvements to the code.
 | |
| * ``type: regression``: indicates a problem that was introduced in a release which was working previously.
 | |
| 
 | |
| **Status**
 | |
| 
 | |
| * ``status: critical``: grave problem or usability issue that affects lots of users.
 | |
| * ``status: easy``: easy issue that is friendly to new contributors.
 | |
| * ``status: help wanted``: core developers need help from experts on this topic.
 | |
| * ``status: needs information``: reporter needs to provide more information; can be closed after 2 or more weeks of inactivity.
 | |
| 
 | |
| **Topic**
 | |
| 
 | |
| * ``topic: collection``
 | |
| * ``topic: fixtures``
 | |
| * ``topic: parametrize``
 | |
| * ``topic: reporting``
 | |
| * ``topic: selection``
 | |
| * ``topic: tracebacks``
 | |
| 
 | |
| **Plugin (internal or external)**
 | |
| 
 | |
| * ``plugin: cache``
 | |
| * ``plugin: capture``
 | |
| * ``plugin: doctests``
 | |
| * ``plugin: junitxml``
 | |
| * ``plugin: monkeypatch``
 | |
| * ``plugin: nose``
 | |
| * ``plugin: pastebin``
 | |
| * ``plugin: pytester``
 | |
| * ``plugin: tmpdir``
 | |
| * ``plugin: unittest``
 | |
| * ``plugin: warnings``
 | |
| * ``plugin: xdist``
 | |
| 
 | |
| 
 | |
| **OS**
 | |
| 
 | |
| Issues specific to a single operating system. Do not use as a means to indicate where an issue originated from, only
 | |
| for problems that happen **only** in that system.
 | |
| 
 | |
| * ``os: linux``
 | |
| * ``os: mac``
 | |
| * ``os: windows``
 | |
| 
 | |
| **Temporary**
 | |
| 
 | |
| Used to classify issues for limited time, to help find issues related in events for example.
 | |
| They should be removed after they are no longer relevant.
 | |
| 
 | |
| * ``temporary: EP2017 sprint``:
 | |
| * ``temporary: sprint-candidate``:
 | |
| 
 | |
| 
 | |
| .. include:: ../../HOWTORELEASE.rst
 |