Triaging Python tickets: Difference between revisions

Undo revision 17690 by 117.239.152.85 (talk)
imported>Jesstess
No edit summary
imported>Semenko
(Undo revision 17690 by 117.239.152.85 (talk))
 
(20 intermediate revisions by 2 users not shown)
Line 1:
Welcome! This page contains instructions for triaging Python tickets, which is something anyone can do and is a great way to get started with contributing to Python.
Python has a ton of stalled tickets, and in particular tickets that report bugs that haven't been confirmed, or that have patches that haven't been reviewed. Python needs more people triaging these tickets; want to help?
 
This page focuses on 3 types of triage: verifying bugs, reviewing patches, and reviewing documentation patches.
 
[[File:Python_logo.png|200px]] [[File:Bug.png|200px]]
 
== Overview ==
 
[http://docs.python.org/devguide/triaging.html This section of the CPython developer guide] details triaging tickets. Please note that any registered user can comment on a ticket, but one must have "Developer" rights inon the [http://bugs.python.org/ issue tracker] to update certain ticket fields.
 
If you don't have Developer rights, don't worry! Leave detailed comments on a ticket, and everyone on the [http://docs.python.org/devguide/triaging.html#nosy-list nosy list] will get an email. With your documentedtriage triagecomments, you've greatly increased the chance that someone who can update the fields will review your comments and move the ticket forward.
 
Also, if you do this for a while, you'll get Developer rights so you can make the ticket field changes yourself!
 
== Verifying bugs ==
 
[[File:Debugging.png|100px]]
 
Often, someone will report a bug, but nobody will want to work on a patch for it until the bug is confirmed. Thus, confirming a bug is a big step towards getting it fixed.
 
=== TriageBug commentverification checklist ===
 
If you '''can''' reproduce the bug:
Line 19 ⟶ 25:
# Say that you can reproduce the bug.
# Reiterate what you expected to happen, and what actually happened.
# Enumerate the steps you took to reproduce the problem. Include a complete transcript, including the commands you ran, Python code you enteredDo at theleast interpreter, tracebacks, etc. If the output is very long, for readability, attach it to the ticket insteadone of putting it directly in the comment.:
## include a complete transcript, including the commands you ran, Python code you entered at the interpreter, tracebacks, etc. If the output is very long, for readability, attach it to the ticket instead of putting it directly in the comment.
## Attach a short, standalone program that reproduces the bug to the ticket. This will be a helpful basis for writing test cases.
# List all versions of Python in which the bug was and wasn't present for you.
# List all operating systems on which the bug was and wasn't present for you.
# Attach a short, standalone program that reproduces the bug to the ticket. This will be a helpful basis for writing test cases.
 
If you '''can't''' reproduce the bug:
Line 31 ⟶ 38:
# List all operating systems on which the bug wasn't present for you.
 
=== Example review ===
 
<blockquote>
jesstess, thanks for your bug report!<br />
<br />
I was able to reproduce the issue on both the default branch and in Python 3.4. I couldn't reproduce on 3.3, so this looks like a regression. I tested on OSX 10.8.4 but I believe this bug exists on all operating systems.<br />
<br />
I've attached a short script as a reproducer. The expected output is for it to print <code>42</code>, but it raises a <code>ValueError</code>.
</blockquote>
 
== Reviewing patches ==
 
[[File:Patch.png|100px]]
CPython committers are really busy, and they won't typically try to merge a patch until someone else has reviewed it. Thus, reviewing a patch is a big step towards getting it merged.
 
CPython committers are really busy, and they typically won't typically try to merge a patch until someone else has reviewed it. Thus, reviewing a patch is a big step towards getting it merged.
 
=== Patch review checklist ===
Line 46 ⟶ 64:
## If the patch includes tests, verify that the tests fail with the code changes reverted.
# Does [http://docs.python.org/devguide/patch.html#generation make patchcheck] pass?
# Is the patch accompanied by [http://docs.python.org/devguide/runtests.html new tests] that either exercise the bug or the new functionality?
# Do the tests impacted by the patch still pass? (The committer will run the whole test suite, but you can [http://docs.python.org/devguide/runtests.html#runtests run just the relevant tests])
# If functionality was added or changed, is the patch accompanied by new or updated [http://docs.python.org/devguide/documenting.html documentation]?
 
=== Example patch review ===
In most cases, code changes must be accompanied by tests before they will get merged.
 
<blockquote>
jesstess, thanks for your patch and tests!<br />
<br />
The docstring for <code>parse_request</code> needs to be updated as part of this change.<br />
<br />
Other than that, the patch looks correct from my inspection, applies cleanly, and implements a straightforward solution.<br />
<br />
I verified that with the patch applied, the reproducer no longer raises a <code>ValueError</code> and instead prints <code>42</code> as expected. <code>make patchcheck</code> also reports no errors, and the <code>test_httplib</code> tests still pass. I confirmed that the tests for parsing unicode strings that were added in this patch exercise the bug, as they fail with the code changes reverted and pass with the full patch applied.<br />
<br />
After the docstring is updated, I think this is ready for a commit review!
</blockquote>
 
== Reviewing documentation patches ==
 
[[File:History.png|100px]]
 
Documentation patches have some different steps from code patches. They don't generally require accompanying tests, and they should be inspected visually for correctness.
Line 64 ⟶ 97:
# Does the documentation [http://docs.python.org/devguide/documenting.html#building-the-documentation build without errors]? In general, building just the HTML docs is sufficient.
# Does the resulting HTML look reasonable? (For example: is the code formatted correctly, do the footnote links work)
 
=== Example documentation review ===
 
<blockquote>
jesstess, thanks for your patch!<br />
<br />
The docs build cleanly with the patch. I visually inspected the changes in the built HTML docs and they look good. I also ran the modified example code from the docs and confirmed that it runs as expected.
 
I think this is ready for a commit review!
</blockquote>
 
== Finding tickets to triage ==
 
Bug reports that need verifying are typically in the [http://bugs.python.org/issue?%40search_text=&ignore=file%3Acontent&title=&%40columns=title&id=&%40columns=id&stage=3&creation=&creator=&activity=&%40columns=activity&%40sort=activity&actor=&nosy=&type=&components=&versions=&dependencies=&assignee=&keywords=&priority=&%40group=priority&status=1&%40columns=status&resolution=&nosy_count=&message_count=&%40pagesize=50&%40startwith=0&%40queryname=&%40old-queryname=&%40action=search "needs patch" stage].
 
Patches that need review are typically in the [http://bugs.python.org/issue?%40search_text=&ignore=file%3Acontent&title=&%40columns=title&id=&%40columns=id&stage=4&creation=&creator=&activity=&%40columns=activity&%40sort=activity&actor=&nosy=&type=&components=&versions=&dependencies=&assignee=&keywords=&priority=&%40group=priority&status=1&%40columns=status&resolution=&nosy_count=&message_count=&%40pagesize=50&%40startwith=0&%40queryname=&%40old-queryname=&%40action=search "patch review" stage].
 
Documentation tickets are typically in the [http://bugs.python.org/issue?%40search_text=&ignore=file%3Acontent&title=&%40columns=title&id=&%40columns=id&stage=4&creation=&creator=&activity=&%40columns=activity&%40sort=activity&actor=&nosy=&type=&components=4&versions=&dependencies=&assignee=&keywords=&priority=&%40group=priority&status=1&%40columns=status&resolution=&nosy_count=&message_count=&%40pagesize=50&%40startwith=0&%40queryname=&%40old-queryname=&%40action=search "Documentation" component].
Anonymous user