← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:doctest-want-line-length-noqa into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:doctest-want-line-length-noqa into launchpad:master.

Commit message:
Ignore various want line length errors in doctests

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/407453

This covers cases where it isn't reasonable or practical to wrap the want lines, such as long URLs or wide tables.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:doctest-want-line-length-noqa into launchpad:master.
diff --git a/lib/lp/app/browser/doc/watermark.txt b/lib/lp/app/browser/doc/watermark.txt
index ef1a66d..7c792bb 100644
--- a/lib/lp/app/browser/doc/watermark.txt
+++ b/lib/lp/app/browser/doc/watermark.txt
@@ -74,7 +74,7 @@ Any HTML in the context title will be escaped to avoid XSS vulnerabilities.
 
     >>> person = factory.makePerson(
     ...     displayname="Fubar<br/><script>alert('XSS')</script>")
-    >>> print(get_hierarchy(person).heading())
+    >>> print(get_hierarchy(person).heading())  # noqa
     <h...><a...>Fubar&lt;br/&gt;&lt;script&gt;alert(&#x27;XSS&#x27;)&lt;/script&gt;</a></h...>
 
 
diff --git a/lib/lp/app/doc/displaying-paragraphs-of-text.txt b/lib/lp/app/doc/displaying-paragraphs-of-text.txt
index 9875fd8..7382553 100644
--- a/lib/lp/app/doc/displaying-paragraphs-of-text.txt
+++ b/lib/lp/app/doc/displaying-paragraphs-of-text.txt
@@ -83,7 +83,7 @@ previous line.  This aids in the display of code samples:
     ...     '    def currentCount(self, language=None):\n'
     ...     '        """See IRosettaStats."""\n'
     ...     '        return self.currentCount\n')
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p>This is a code sample written in Python.<br />
     &nbsp;&nbsp;&nbsp;&nbsp;def messageCount(self):<br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;&quot;See IRosettaStats.&quot;&quot;&quot;<br />
@@ -104,7 +104,7 @@ Testing a bunch of URL links.
     ...     '\n'
     ...     'I have a Jabber account (jabber:foo@xxxxxxxxxxxxxxxxxx)\n'
     ...     'Foo Bar <mailto:foo.bar@xxxxxxxxxxx>')
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p><a rel="nofollow" href="https://launchpad.net/";>https:/<wbr />/launchpad.<wbr />net/</a> is the new Launchpad site<br />
     <a rel="nofollow" href="http://example.com/something?foo=bar&amp;hum=baz";>http://<wbr />example.<wbr />com/something?<wbr />foo=bar&amp;<wbr />hum=baz</a><br />
     You can check the PPC md5sums at <a rel="nofollow" href="ftp://ftp.ubuntu.com/ubuntu/dists/breezy/main/installer-powerpc/current/images/MD5SUMS";>ftp://ftp.<wbr />ubuntu.<wbr />com/ubuntu/<wbr />dists/breezy/<wbr />main/installer-<wbr />powerpc/<wbr />current/<wbr />images/<wbr />MD5SUMS</a><br />
@@ -159,7 +159,7 @@ fmt:text-to-html knows how to linkify URLs:
     ...     'http://localhost?testing=[square-brackets-in-query]\n'
     ... )
 
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p><a rel="nofollow" href="http://localhost:8086/bar/baz/foo.html";>http://<wbr />localhost:<wbr />8086/bar/<wbr />baz/foo.<wbr />html</a><br />
     <a rel="nofollow" href="ftp://localhost:8086/bar/baz/foo.bar.html";>ftp://localhost<wbr />:8086/bar/<wbr />baz/foo.<wbr />bar.html</a><br />
     <a rel="nofollow" href="sftp://localhost:8086/bar/baz/foo.bar.html";>sftp://<wbr />localhost:<wbr />8086/bar/<wbr />baz/foo.<wbr />bar.html</a>.<br />
@@ -432,21 +432,21 @@ After login, a link:
     >>> getUtility(ILaunchBag).developer
     True
 
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p><a href="https://oops.canonical.com/oops/?oopsid=OOPS-38C23";>OOPS-38C23</a></p>
 
 OOPS references can take a number of forms:
 
     >>> text = 'OOPS-38C23'
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p><a href="https://oops.canonical.com/oops/?oopsid=OOPS-38C23";>OOPS-38C23</a></p>
 
     >>> text = 'OOPS-123abcdef'
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p><a href="https://oops.canonical.com/oops/?oopsid=OOPS-123abcdef";>OOPS-123abcdef</a></p>
 
     >>> text = 'OOPS-abcdef123'
-    >>> print(test_tales('foo/fmt:text-to-html', foo=text))
+    >>> print(test_tales('foo/fmt:text-to-html', foo=text))  # noqa
     <p><a href="https://oops.canonical.com/oops/?oopsid=OOPS-abcdef123";>OOPS-abcdef123</a></p>
 
 If the configuration value doesn't end with a slash, we won't add one. This
diff --git a/lib/lp/app/doc/tales.txt b/lib/lp/app/doc/tales.txt
index e5d2284..8316cd9 100644
--- a/lib/lp/app/doc/tales.txt
+++ b/lib/lp/app/doc/tales.txt
@@ -544,7 +544,7 @@ Git references
 For Git references, fmt:link links to the reference page.
 
     >>> [ref] = factory.makeGitRefs(repository=repository, paths=[u"master"])
-    >>> print(test_tales("ref/fmt:link", ref=ref))
+    >>> print(test_tales("ref/fmt:link", ref=ref))  # noqa
     <a href=".../~eric/fooix/+git/bar/+ref/master">~eric/fooix/+git/bar:master</a>
 
 
diff --git a/lib/lp/app/doc/textformatting.txt b/lib/lp/app/doc/textformatting.txt
index bcbdc00..3d9dd40 100644
--- a/lib/lp/app/doc/textformatting.txt
+++ b/lib/lp/app/doc/textformatting.txt
@@ -297,7 +297,7 @@ The callable's argument is the pre-wrapped paragraph.
     ...     return paragraph.startswith('http://')
 
     >>> body = wrapper.format(text, force_wrap=True, wrap_func=nowrap)
-    >>> print(body)
+    >>> print(body)  # noqa
     Hello Scarlett O'Hara,
     <BLANKLINE>
     frankly-my-dear-i-dont-give-a-damn has a new message requiring your
diff --git a/lib/lp/blueprints/stories/blueprints/xx-creation.txt b/lib/lp/blueprints/stories/blueprints/xx-creation.txt
index 128b233..35041a3 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-creation.txt
+++ b/lib/lp/blueprints/stories/blueprints/xx-creation.txt
@@ -185,7 +185,7 @@ Users can also follow the textual "Register a blueprint" link:
 
     >>> for tag in find_tags_by_class(
     ...     user_browser.contents, 'menu-link-new'):
-    ...     print(tag)
+    ...     print(tag)  # noqa
     <a class="menu-link-new..."
      href="http://blueprints.launchpad.test/sprints/futurista/+addspec";>Register
        a blueprint</a>
diff --git a/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt b/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt
index d96e9c2..19ceace 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt
+++ b/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt
@@ -57,7 +57,7 @@ redirected back to the spec page when we are done.
     >>> user_browser.open(
     ...     'http://blueprints.launchpad.test/ubuntu/+spec/'
     ...     'media-integrity-check/+setdistroseries')
-    >>> user_browser.url
+    >>> user_browser.url  # noqa
     'http://blueprints.launchpad.test/ubuntu/+spec/media-integrity-check/+setdistroseries'
     >>> user_browser.getControl('Goal').value = ['5']
     >>> user_browser.getControl('Continue').click()
diff --git a/lib/lp/blueprints/stories/blueprints/xx-editing.txt b/lib/lp/blueprints/stories/blueprints/xx-editing.txt
index 8c9009b..b5b3e2c 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-editing.txt
+++ b/lib/lp/blueprints/stories/blueprints/xx-editing.txt
@@ -11,13 +11,13 @@ First, we need to load the +edit page.
     >>> spec_path = '/firefox/+spec/extension-manager-upgrades'
     >>> browser.open(features_domain + spec_path)
     >>> browser.getLink('Change details').click()
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades/+edit'
 
 The page links back to the blueprint page, in case we change our minds.
 
     >>> back_link = browser.getLink('Extension Manager Upgrades')
-    >>> back_link.url
+    >>> back_link.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
 
 Launchpad won't let us use an URL already used in another blueprint.
@@ -61,24 +61,24 @@ specification home page.
     >>> browser.getControl('Summary').value = summary
     >>> browser.getControl('Status Whiteboard').value = 'XXX'
     >>> browser.getControl('Change').click()
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
 
 Also, we would like to assign these to someone other than Carlos, and we
 would also like to have a drafter associated with it.
 
     >>> browser.getLink(url='+people').click()
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades/+people'
     >>> back_link = browser.getLink('Extension Manager System Upgrades')
-    >>> back_link.url
+    >>> back_link.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
     >>> browser.getControl('Assignee').value = 'tsukimi@xxxxxxxxxx'
     >>> browser.getControl('Drafter').value = 'daf@xxxxxxxxxxxxx'
     >>> browser.getControl('Approver').value = 'stuart.bishop@xxxxxxxxxxxxx'
     >>> browser.getControl('Status Whiteboard').value = 'YYY'
     >>> browser.getControl('Change').click()
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
 
 Finally, we should be able to change the status metadata (definition status,
@@ -86,13 +86,13 @@ implementation status, estimated man days etc) of the specification.
 
     >>> browser.getLink(url='+status').click()
     >>> back_link = browser.getLink('Extension Manager System Upgrades')
-    >>> back_link.url
+    >>> back_link.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
     >>> browser.getControl('Definition Status').value = ['DRAFT']
     >>> browser.getControl('Implementation Status').value = ['SLOW']
     >>> browser.getControl('Status Whiteboard').value = 'XXX'
     >>> browser.getControl('Change').click()
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
 
 Any logged in user can edit a specification whiteboard.
@@ -143,7 +143,7 @@ But an administrator can.
     ...     'http://blueprints.launchpad.test/kubuntu/'
     ...     '+spec/krunch-desktop-plan')
     >>> admin_browser.getLink(url='+priority').click()
-    >>> admin_browser.url
+    >>> admin_browser.url  # noqa
     'http://blueprints.launchpad.test/kubuntu/+spec/krunch-desktop-plan/+priority'
     >>> back_link = admin_browser.getLink('The Krunch Desktop Plan')
     >>> back_link.url
diff --git a/lib/lp/blueprints/stories/blueprints/xx-superseding.txt b/lib/lp/blueprints/stories/blueprints/xx-superseding.txt
index 9e4910a..fe83bdd 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-superseding.txt
+++ b/lib/lp/blueprints/stories/blueprints/xx-superseding.txt
@@ -26,9 +26,9 @@ The page contains a link back to the blueprint, in case we change our
 mind.
 
     >>> back_link = browser.getLink('Extension Manager Upgrades')
-    >>> back_link.url
+    >>> back_link.url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
-    >>> browser.getLink('Cancel').url
+    >>> browser.getLink('Cancel').url  # noqa
     'http://blueprints.launchpad.test/firefox/+spec/extension-manager-upgrades'
 
 Next, we will POST to that form, setting the spec which supersedes this one:
diff --git a/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt b/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt
index 5e653eb..d37db9a 100644
--- a/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt
+++ b/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt
@@ -29,7 +29,7 @@ We register a new blueprint.
 We then set the blueprint's implementation status to ''informational''.
 
     >>> user_browser.getLink(url='+status').click()
-    >>> user_browser.url
+    >>> user_browser.url  # noqa
     'http://blueprints.launchpad.test/jokosher/+spec/informational-blueprint/+status'
     >>> user_browser.getControl('Implementation Status').value = (
     ...     ['INFORMATIONAL'])
diff --git a/lib/lp/bugs/browser/tests/bugtask-search-views.txt b/lib/lp/bugs/browser/tests/bugtask-search-views.txt
index 3645cdf..48d3458 100644
--- a/lib/lp/bugs/browser/tests/bugtask-search-views.txt
+++ b/lib/lp/bugs/browser/tests/bugtask-search-views.txt
@@ -460,6 +460,5 @@ get_buglisting_search_filter_url().
 
     >>> print(get_buglisting_search_filter_url(
     ...     status_upstream='open_upstream', status='NEW',
-    ...     importance='WISHLIST', assignee='mark'))
+    ...     importance='WISHLIST', assignee='mark'))  # noqa
     +bugs?search=Search&field.assignee=mark&field.importance=WISHLIST&field.status=NEW&field.status_upstream=open_upstream
-
diff --git a/lib/lp/bugs/browser/tests/person-bug-views.txt b/lib/lp/bugs/browser/tests/person-bug-views.txt
index 5f1d5ab..24be807 100644
--- a/lib/lp/bugs/browser/tests/person-bug-views.txt
+++ b/lib/lp/bugs/browser/tests/person-bug-views.txt
@@ -192,7 +192,7 @@ render the overview report.
 
     >>> print(ubuntu_firefox_bugcounts['package_name'])
     mozilla-firefox in Ubuntu
-    >>> print(ubuntu_firefox_bugcounts['package_search_url'])
+    >>> print(ubuntu_firefox_bugcounts['package_search_url'])  # noqa
     http://bugs.launchpad.test/ubuntu/+source/mozilla-firefox?field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed&search=Search
 
     >>> print(ubuntu_firefox_bugcounts['open_bugs_count'])
@@ -204,13 +204,13 @@ render the overview report.
     >>> print(ubuntu_firefox_bugcounts['inprogress_bugs_count'])
     0
 
-    >>> print(ubuntu_firefox_bugcounts['open_bugs_url'])
+    >>> print(ubuntu_firefox_bugcounts['open_bugs_url'])  # noqa
     http://bugs.launchpad.test/ubuntu/+source/mozilla-firefox?field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed&search=Search
-    >>> print(ubuntu_firefox_bugcounts['critical_bugs_url'])
+    >>> print(ubuntu_firefox_bugcounts['critical_bugs_url'])  # noqa
     http://bugs.launchpad.test/ubuntu/+source/mozilla-firefox?field.importance=Critical&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed&search=Search
-    >>> print(ubuntu_firefox_bugcounts['unassigned_bugs_url'])
+    >>> print(ubuntu_firefox_bugcounts['unassigned_bugs_url'])  # noqa
     http://bugs.launchpad.test/ubuntu/+source/mozilla-firefox?assignee_option=none&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed&search=Search
-    >>> print(ubuntu_firefox_bugcounts['inprogress_bugs_url'])
+    >>> print(ubuntu_firefox_bugcounts['inprogress_bugs_url'])  # noqa
     http://bugs.launchpad.test/ubuntu/+source/mozilla-firefox?field.status=In+Progress&search=Search
 
 The total number of bugs, broken down in the same ways as the package
diff --git a/lib/lp/bugs/doc/bugnotification-email.txt b/lib/lp/bugs/doc/bugnotification-email.txt
index 268d2a9..bc835c9 100644
--- a/lib/lp/bugs/doc/bugnotification-email.txt
+++ b/lib/lp/bugs/doc/bugnotification-email.txt
@@ -386,6 +386,7 @@ Adding an attachment will generate a notification that looks as follows:
     ...     notification = change.getBugNotification()
     ...     print(notification['text']) #doctest: -NORMALIZE_WHITESPACE
     ...     print("-----------------------------")
+    ... # noqa
     ** Attachment added: "A screenshot of the problem"
        http://bugs.launchpad.test/bugs/.../+attachment/.../+files/screenshot.png
     -----------------------------
@@ -401,6 +402,7 @@ Removing an attachment generates a notification, too.
     ...     notification = change.getBugNotification()
     ...     print(notification['text']) #doctest: -NORMALIZE_WHITESPACE
     ...     print("-----------------------------")
+    ... # noqa
     ** Attachment removed: "A screenshot of the problem"
        http://bugs.launchpad.test/bugs/.../+attachment/.../+files/screenshot.png
     -----------------------------
diff --git a/lib/lp/bugs/doc/bugnotification-sending.txt b/lib/lp/bugs/doc/bugnotification-sending.txt
index 8d947fb..a3d7b8f 100644
--- a/lib/lp/bugs/doc/bugnotification-sending.txt
+++ b/lib/lp/bugs/doc/bugnotification-sending.txt
@@ -273,7 +273,7 @@ lp/bugs/tests/test_bugnotification.py), and not demonstrated here.
 Another thing worth noting is that there's a blank line before the
 signature, and the signature marker has a trailing space.
 
-    >>> six.ensure_str(message.get_payload(decode=True)).splitlines()
+    >>> six.ensure_str(message.get_payload(decode=True)).splitlines()  # noqa
     [...,
      '',
      '-- ',
diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt b/lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt
index 8d5d055..67bf508 100644
--- a/lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt
+++ b/lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt
@@ -230,7 +230,7 @@ We cannot allow proprietary bugs to affect more than one pillar.
     >>> browser.getLink(url='+choose-affected-product').click()
     >>> browser.getControl(name='field.product').value = other_product_name
     >>> browser.getControl('Continue').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://bugs.launchpad.test/proprietary-product/+bug/.../+choose-affected-product
 
     >>> print_feedback_messages(browser.contents)
@@ -267,7 +267,7 @@ If this wasn't what we intended, we can go back to choose another
 product, though.
 
     >>> user_browser.getLink('Choose another project').click()
-    >>> print(user_browser.url)
+    >>> print(user_browser.url)  # noqa
     http://bugs.launchpad.test/ubuntu/+source/evolution/+bug/6/+choose-affected-product?field.product=evolution
 
     >>> user_browser.getControl('Project').value
diff --git a/lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt b/lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt
index 9016ea8..bdbe665 100644
--- a/lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt
+++ b/lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt
@@ -53,7 +53,7 @@ displayed as the bug report).
     (8 bytes,
     text/plain)
     >>> link = browser.getLink('sample data')
-    >>> print(link.url)
+    >>> print(link.url)  # noqa
     http://bugs.launchpad.test/jokosher/+bug/11/+attachment/.../+files/test.txt
     >>> print(comment_0.find('a', text='Edit'))
     <a class="sprite edit action-icon"
diff --git a/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt b/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt
index c691592..ec8e157 100644
--- a/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt
+++ b/lib/lp/bugs/stories/bugattachments/xx-bugattachments.txt
@@ -113,7 +113,7 @@ the flag "this attachment is a patch"...
 
 ...we are redirected to a page...
 
-    >>> user_browser.url
+    >>> user_browser.url  # noqa
     'http://bugs.launchpad.test/firefox/+bug/1/+attachment/.../+confirm-is-patch'
 
 ...where we see a message that we should double-check if this file
@@ -169,7 +169,7 @@ if we set the "patch" flag for this attachment...
 ...we are redirected to the page where we must confirm that this attachment
 is indeed a patch.
 
-    >>> user_browser.url
+    >>> user_browser.url  # noqa
     'http://bugs.launchpad.test/firefox/+bug/1/+attachment/.../+confirm-is-patch'
 
 ...where we see a message asking us if we really ant to declare this file
@@ -301,7 +301,7 @@ The server now checks if the attachment looks like a patch. In this case,
 is doesn't, and we get the edit page again, with a message asking us if
 the attachment should indeed be labeled as a patch
 
-    >>> user_browser.url
+    >>> user_browser.url  # noqa
     'http://bugs.launchpad.test/firefox/+bug/1/+attachment/.../+confirm-is-patch'
 
     >>> print(extract_text(find_tags_by_class(
diff --git a/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt b/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt
index a09fca1..f4e5a39 100644
--- a/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt
+++ b/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt
@@ -231,6 +231,7 @@ The only differences are the download URLs of bug attachments:
     ...             if bug_lines[line_no] != bug_task_lines[line_no]:
     ...                 print(bug_lines[line_no])
     ...                 print(bug_task_lines[line_no])
+    ... # noqa
     http://bugs.launchpad.test/bugs/1/+attachment/.../+files/file_a.txt text/html
     http://bugs.launchpad.test/firefox/+bug/.../+files/file_a.txt text/html
     http://bugs.launchpad.test/bugs/1/.../+files/file%20with%20space.txt...
diff --git a/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt b/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
index 0e43b2d..7954298 100644
--- a/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
+++ b/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
@@ -283,7 +283,7 @@ A default search turns that bug up as well.
 
     >>> user_browser.open('http://bugs.launchpad.test/jokosher')
     >>> user_browser.getControl('Search', index=0).click()
-    >>> print(user_browser.url)
+    >>> print(user_browser.url)  # noqa
     http://bugs.launchpad.test/jokosher/+bugs?...&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE...
     >>> ('<a class="bugtitle" '
     ...  'href="http://bugs.launchpad.test/jokosher/+bug/11";>' in
diff --git a/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt b/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
index dc57806..0fd1188 100644
--- a/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
+++ b/lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt
@@ -30,7 +30,7 @@ respective bug task.
     ...
     zope.testbrowser.browser.LinkNotFoundError
 
-    >>> print(admin_browser.getLink('Low', index=1).url)
+    >>> print(admin_browser.getLink('Low', index=1).url)  # noqa
     http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/1/+editstatus
     >>> print(admin_browser.getLink('New', index=1).url)
     http://bugs...test/ubuntu/+source/mozilla-firefox/+bug/1/+editstatus
diff --git a/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt b/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt
index b612e76..148dac5 100644
--- a/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt
+++ b/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt
@@ -84,7 +84,7 @@ They target bug #1 to milestone 5.04-rc1 for Ubuntu.
 
     >>> admin_browser.open('http://launchpad.test/firefox/+bug/1')
     >>> table = find_tag_by_id(admin_browser.contents, 'affected-software')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Affects                      Status  Importance  Assigned to           Milestone
     ... Mozilla Firefox          ... New     Low     Mark Shuttleworth ... 1.0
     ...
@@ -99,7 +99,7 @@ They target bug #1 to milestone 5.04-rc1 for Ubuntu.
     >>> milestone_control.displayValue = ['Ubuntu 5.04.rc1']
     >>> admin_browser.getControl('Save Changes', index=3).click()
     >>> table = find_tag_by_id(admin_browser.contents, 'affected-software')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Affects                      Status  Importance  Assigned to           Milestone
     ... Mozilla Firefox      ... New     Low         Mark Shuttleworth ... 1.0
     ...
diff --git a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
index 2d615ed..d58ea15 100644
--- a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
+++ b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
@@ -527,16 +527,16 @@ to True.
     >>> soup = BeautifulSoup(
     ...     browser.contents, 'xml', parse_only=SoupStrainer('id'))
     >>> feed_id = extract_text(soup.find('id'))
-    >>> print(feed_id)
+    >>> print(feed_id)  # noqa
     tag:launchpad.net,2008:/+bugs.atom?field.scope.target=&amp;field.scope=all&amp;field.searchtext=&amp;search=Search+Bug+Reports
 
     >>> from lp.services.webapp.escaping import html_escape
-    >>> print(html_escape(browser.url))
+    >>> print(html_escape(browser.url))  # noqa
     http://feeds.launchpad.test/bugs/+bugs.atom?field.scope.target=&amp;field.scope=all&amp;field.searchtext=&amp;search=Search+Bug+Reports
 
     >>> self_links = parse_links(browser.contents, 'self')
     >>> for link in self_links:
-    ...     print(link)
+    ...     print(link)  # noqa
     <link href="http://feeds.launchpad.test/bugs/+bugs.atom?field.scope.target=&amp;field.scope=all&amp;field.searchtext=&amp;search=Search+Bug+Reports"; rel="self"/>
 
     >>> entries = parse_entries(browser.contents)
diff --git a/lib/lp/bugs/stories/feeds/xx-bug-html.txt b/lib/lp/bugs/stories/feeds/xx-bug-html.txt
index 510e91a..a2847f0 100644
--- a/lib/lp/bugs/stories/feeds/xx-bug-html.txt
+++ b/lib/lp/bugs/stories/feeds/xx-bug-html.txt
@@ -52,7 +52,7 @@ the bug itself.
     ...              'show_column=bugtargetdisplayname')
     >>> browser.title
     'Bugs in Jokosher'
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://feeds.launchpad.test/jokosher/latest-bugs.html?show_column=bugtargetdisplayname'
 
     >>> entries = parse_entries(browser.contents)
@@ -79,7 +79,7 @@ as the latest bugs feed for a product.
     ...              'show_column=bugtargetdisplayname')
     >>> browser.title
     'Bugs in The Mozilla Project'
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://feeds.launchpad.test/mozilla/latest-bugs.html?show_column=bugtargetdisplayname'
 
     >>> entries = parse_entries(browser.contents)
@@ -161,7 +161,7 @@ This feed gets the latest bugs reported against any target.
     ...              'show_column=bugtargetdisplayname')
     >>> browser.title
     'Launchpad bugs'
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://feeds.launchpad.test/bugs/latest-bugs.html?show_column=bugtargetdisplayname'
 
     >>> entries = parse_entries(browser.contents)
diff --git a/lib/lp/bugs/stories/webservice/xx-bug.txt b/lib/lp/bugs/stories/webservice/xx-bug.txt
index dcd2665..b1b25d0 100644
--- a/lib/lp/bugs/stories/webservice/xx-bug.txt
+++ b/lib/lp/bugs/stories/webservice/xx-bug.txt
@@ -563,6 +563,7 @@ distribution.
     >>> print(webservice.named_post(
     ...     distro_bugtask_path, 'transitionToTarget',
     ...     target=webservice.getAbsoluteUrl('/ubuntu/+source/alsa-utils')))
+    ... # noqa
     HTTP/1.1 301 Moved Permanently
     ...
     Location: http://api.launchpad.test/beta/ubuntu/+source/alsa-utils/+bug/...
diff --git a/lib/lp/code/doc/branch-notifications.txt b/lib/lp/code/doc/branch-notifications.txt
index d59000b..c8ff6d5 100644
--- a/lib/lp/code/doc/branch-notifications.txt
+++ b/lib/lp/code/doc/branch-notifications.txt
@@ -66,7 +66,9 @@ also sends the email to the list of recipients.
     name12
     >>> notification_body = six.ensure_text(
     ...     branch_notification.get_payload(decode=True))
-    >>> print(notification_body) #doctest: -NORMALIZE_WHITESPACE
+    >>> print(notification_body)
+    ... # noqa
+    ... # doctest: -NORMALIZE_WHITESPACE
     The contents.
     <BLANKLINE>
     --
diff --git a/lib/lp/code/stories/branches/xx-private-branch-listings.txt b/lib/lp/code/stories/branches/xx-private-branch-listings.txt
index a1fbbe3..c775877 100644
--- a/lib/lp/code/stories/branches/xx-private-branch-listings.txt
+++ b/lib/lp/code/stories/branches/xx-private-branch-listings.txt
@@ -81,7 +81,7 @@ developer.
 
     >>> landscape_dev_browser = setupBrowser(
     ...     auth='Basic test@xxxxxxxxxxxxx:test')
-    >>> print_recently_registered_branches(landscape_dev_browser)
+    >>> print_recently_registered_branches(landscape_dev_browser)  # noqa
     <BLANKLINE>
     ...~name12/landscape/feature-x...<span...class="sprite private"...
     ...~landscape-developers/landscape/trunk...<span...class="sprite private"...
@@ -91,7 +91,7 @@ developer.
 
 Launchpad administrators are able to see all private branches.
 
-    >>> print_recently_registered_branches(admin_browser)
+    >>> print_recently_registered_branches(admin_browser)  # noqa
     <BLANKLINE>
     ...~no-priv/landscape/testing-branch...<span...class="sprite private"...
     ...~name12/landscape/feature-x...<span...class="sprite private"...
diff --git a/lib/lp/code/stories/codeimport/xx-codeimport-view.txt b/lib/lp/code/stories/codeimport/xx-codeimport-view.txt
index 8d36956..aea1b2c 100644
--- a/lib/lp/code/stories/codeimport/xx-codeimport-view.txt
+++ b/lib/lp/code/stories/codeimport/xx-codeimport-view.txt
@@ -88,7 +88,7 @@ imports appear again.
     >>> table = find_tag_by_id(browser.contents, 'code-import-listing')
     >>> rows = [extract_text(tr) for tr in table('tr')]
     >>> for row in rows:
-    ...     print(row)
+    ...     print(row)  # noqa
     Import                                     Created  Source type        Target type Location     Status
     ~vcs-imports/gnome-terminal/import         2007-... Subversion via ... Bazaar      http://sv... Reviewed
     ~vcs-imports/evolution/import              2007-... Concurrent Vers... Bazaar      :pserver:... Pending Review
@@ -105,7 +105,7 @@ We can also filter by source type.
     >>> table = find_tag_by_id(browser.contents, 'code-import-listing')
     >>> rows = [extract_text(tr) for tr in table('tr')]
     >>> for row in rows:
-    ...     print(row)
+    ...     print(row)  # noqa
     Import                        Created  Source type        Target type Location     Status
     ~vcs-imports/evolution/import 2007-... Concurrent Vers... Bazaar      :pserver:... Pending Review
 
@@ -120,7 +120,7 @@ We can also filter by source type.
     >>> table = find_tag_by_id(browser.contents, 'code-import-listing')
     >>> rows = [extract_text(tr) for tr in table('tr')]
     >>> for row in rows:
-    ...     print(row)
+    ...     print(row)  # noqa
     Import                                     Created  Source type        Target type Location     Status
     ~name12/gnome-terminal/+git/gnome-terminal ...      Git                Git         git://git... Reviewed
     ~name12/evolution/+git/evolution           ...      Git                Git         https://g... Reviewed
diff --git a/lib/lp/code/stories/feeds/xx-branch-atom.txt b/lib/lp/code/stories/feeds/xx-branch-atom.txt
index 45e545c..89baa8e 100644
--- a/lib/lp/code/stories/feeds/xx-branch-atom.txt
+++ b/lib/lp/code/stories/feeds/xx-branch-atom.txt
@@ -234,10 +234,10 @@ own <id>, which in the case of a single branch feed will be identical.
     ...     browser.contents, 'xml', parse_only=SoupStrainer('id'))
     >>> ids = parse_ids(browser.contents)
     >>> for id_ in ids:
-    ...     print(id_)
+    ...     print(id_)  # noqa
     <id>tag:launchpad.net,2006-10-16:/code/~mark/firefox/release--0.9.1</id>
     <id>tag:launchpad.net,2005-03-09:/code/~mark/firefox/release--0.9.1/revision/1</id>
-    >>> print_parse_links(browser)
+    >>> print_parse_links(browser)  # noqa
     <link href="http://feeds.launchpad.test/~mark/firefox/release--0.9.1/branch.atom"; rel="self"/>
     >>> strainer = SoupStrainer('updated')
     >>> updated_dates = [
diff --git a/lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt b/lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt
index a1876cd..60f0624 100644
--- a/lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt
+++ b/lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt
@@ -49,7 +49,7 @@ read "3 recipes." Let's click through.
 
     >>> nopriv_browser.open(branch_url)
     >>> nopriv_browser.getLink('3 recipes').click()
-    >>> print(nopriv_browser.url)
+    >>> print(nopriv_browser.url)  # noqa
     http://code.launchpad.test/~person-name.../product-name.../branch.../+recipes
 
 The "Base Source" column should not be shown.
@@ -97,7 +97,7 @@ should now read "4 recipes."  Let's click through.
 
     >>> nopriv_browser.open(repository_url)
     >>> nopriv_browser.getLink('4 recipes').click()
-    >>> print(nopriv_browser.url)
+    >>> print(nopriv_browser.url)  # noqa
     http://code.launchpad.test/~person-name.../product-name.../+git/gitrepository.../+recipes
 
 The "Base Source" column should not be shown.
@@ -124,7 +124,7 @@ listed.
     >>> with GitHostingFixture():
     ...     nopriv_browser.open(ref1_url)
     >>> nopriv_browser.getLink('2 recipes').click()
-    >>> print(nopriv_browser.url)
+    >>> print(nopriv_browser.url)  # noqa
     http://code.launchpad.test/~person-name.../product-name.../+git/gitrepository.../+ref/a/+recipes
 
     >>> print_recipe_listing_head(nopriv_browser)
diff --git a/lib/lp/code/stories/webservice/xx-code-import.txt b/lib/lp/code/stories/webservice/xx-code-import.txt
index c8dd559..62a2056 100644
--- a/lib/lp/code/stories/webservice/xx-code-import.txt
+++ b/lib/lp/code/stories/webservice/xx-code-import.txt
@@ -269,7 +269,7 @@ We can create a Git-to-Git import targetting a distribution source package.
     >>> location = response.getHeader('Location')
     >>> response = import_webservice.get(location)
     >>> representation = response.jsonBody()
-    >>> print(representation['self_link'])
+    >>> print(representation['self_link'])  # noqa
     http://.../~import-owner/scruffbuntu/+source/scruff/+git/new-import/+code-import
     >>> print(representation['branch_link'])
     None
diff --git a/lib/lp/registry/browser/tests/distributionmirror-views.txt b/lib/lp/registry/browser/tests/distributionmirror-views.txt
index af16876..987809d 100644
--- a/lib/lp/registry/browser/tests/distributionmirror-views.txt
+++ b/lib/lp/registry/browser/tests/distributionmirror-views.txt
@@ -447,6 +447,7 @@ And which organisation runs a mirror:
 The page contains a source list...
 
     >>> print(extract_text(find_tag_by_id(content, 'sources-list-entries')))
+    ... # noqa
     deb http://localhost:11375/valid-mirror2/ YOUR_UBUNTU_VERSION_HERE main
     deb-src http://localhost:11375/valid-mirror2/ YOUR_UBUNTU_VERSION_HERE main
 
diff --git a/lib/lp/registry/doc/distribution-mirror.txt b/lib/lp/registry/doc/distribution-mirror.txt
index 1249ad7..062b666 100644
--- a/lib/lp/registry/doc/distribution-mirror.txt
+++ b/lib/lp/registry/doc/distribution-mirror.txt
@@ -569,7 +569,7 @@ checked if that mirror's last sync was in the last one or two days.
     >>> when = datetime(2005, 9, 17, tzinfo=utc)
     >>> urls = warty_mirror.getURLsToCheckUpdateness(when=when)
     >>> for (freshness, url) in urls.items():
-    ...     print('%s: %s' % (freshness.name, url))
+    ...     print('%s: %s' % (freshness.name, url))  # noqa
     UP: http://foo.bar.com/pub/pool/main/a/alsa-utils/alsa-utils_1.0.9a-4.dsc
     TWODAYSBEHIND:
     http://foo.bar.com/pub/pool/main/a/alsa-utils/alsa-utils_1.0.8-1ubuntu1.dsc
@@ -625,7 +625,7 @@ so we need to skip that upload.
     >>> when = datetime(2005, 6, 22, tzinfo=utc)
     >>> urls = warty_i386_mirror.getURLsToCheckUpdateness(when=when)
     >>> for (freshness, url) in urls.items():
-    ...     print('%s: %s' % (freshness.name, url))
+    ...     print('%s: %s' % (freshness.name, url))  # noqa
     UP: http://foo.bar.com/pub/pool/main/p/pmount/pmount_1.9-1_all.deb
     ONEWEEKBEHIND:
     http://foo.bar.com/pub/pool/main/m/mozilla-firefox/mozilla-firefox_0.9_i386.deb
@@ -633,7 +633,7 @@ so we need to skip that upload.
     >>> when = datetime(2005, 6, 20, 0, 1, tzinfo=utc)
     >>> urls = warty_i386_mirror.getURLsToCheckUpdateness(when=when)
     >>> for (freshness, url) in urls.items():
-    ...     print('%s: %s' % (freshness.name, url))
+    ...     print('%s: %s' % (freshness.name, url))  # noqa
     UP: http://foo.bar.com/pub/pool/main/p/pmount/pmount_1.9-1_all.deb
     TWODAYSBEHIND:
     http://foo.bar.com/pub/pool/main/m/mozilla-firefox/mozilla-firefox_0.9_i386.deb
diff --git a/lib/lp/registry/stories/announcements/xx-announcements.txt b/lib/lp/registry/stories/announcements/xx-announcements.txt
index c683ffe..df2535e 100644
--- a/lib/lp/registry/stories/announcements/xx-announcements.txt
+++ b/lib/lp/registry/stories/announcements/xx-announcements.txt
@@ -741,7 +741,7 @@ let us use a DTD to define the html entities that standard xml is missing.
     >>> soup = BeautifulSoup(nopriv_browser.contents)
     >>> soup.find('feed').entry.title
     <...>Ampersand="&amp;" LessThan="&lt;" GreaterThan="&gt;"</title>
-    >>> print(soup.find('feed').entry.content)
+    >>> print(soup.find('feed').entry.content)  # noqa
     <...
     Ampersand="&amp;amp;"&lt;br/&gt;
     LessThan="&amp;lt;"&lt;br/&gt;
diff --git a/lib/lp/registry/stories/gpg-coc/xx-gpg-coc.txt b/lib/lp/registry/stories/gpg-coc/xx-gpg-coc.txt
index 275a6bf..f44b232 100644
--- a/lib/lp/registry/stories/gpg-coc/xx-gpg-coc.txt
+++ b/lib/lp/registry/stories/gpg-coc/xx-gpg-coc.txt
@@ -65,7 +65,7 @@ followed by ASCII armored encrypted confirmation instructions.  Ensure that
 the clear text instructions contain the expected URLs pointing to more help.
 
     >>> cipher_body = msg.get_payload(decode=True)
-    >>> print(six.ensure_text(cipher_body))
+    >>> print(six.ensure_text(cipher_body))  # noqa
     Hello,
     <BLANKLINE>
     This message contains the instructions for confirming registration of an
diff --git a/lib/lp/registry/stories/person/xx-person-rdf.txt b/lib/lp/registry/stories/person/xx-person-rdf.txt
index 701bc98..9aa39d4 100644
--- a/lib/lp/registry/stories/person/xx-person-rdf.txt
+++ b/lib/lp/registry/stories/person/xx-person-rdf.txt
@@ -21,7 +21,7 @@ And this is what the FOAF document for an individual actually looks
 like. It includes GPG information, if the user has any.
 
     >>> anon_browser.open("http://launchpad.test/~name16/+rdf";)
-    >>> print(anon_browser.contents)
+    >>> print(anon_browser.contents)  # noqa
     <?xml version="1.0"...?>
     <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
              xmlns:foaf="http://xmlns.com/foaf/0.1/";
diff --git a/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt b/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt
index f33a780..c352ee3 100644
--- a/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt
+++ b/lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt
@@ -64,5 +64,6 @@ the milestone is inactive.
 
     >>> print(extract_text(
     ...     find_tag_by_id(salgados_browser.contents, 'series-trunk')))
+    ... # noqa
     Version                   Expected              Released      Summary
     Mozilla Firefox 0.9.2...  Set date  Change details   This is an inactive ...
diff --git a/lib/lp/services/database/doc/textsearching.txt b/lib/lp/services/database/doc/textsearching.txt
index 72f365e..6aa25a7 100644
--- a/lib/lp/services/database/doc/textsearching.txt
+++ b/lib/lp/services/database/doc/textsearching.txt
@@ -721,6 +721,7 @@ all the terms combined with an & query for each ordinal-1 subset of the terms:
 
     >>> print(nl_phrase_search(
     ...     'system is slow when running firefox on ubuntu', Question))
+    ... # noqa
     (firefox&run&slow&system&ubuntu)|(run&slow&system&ubuntu)|(firefox&slow&system&ubuntu)|(firefox&run&system&ubuntu)|(firefox&run&slow&ubuntu)|(firefox&run&slow&system)
 
 Short queries are expanded more simply:
diff --git a/lib/lp/services/feeds/stories/xx-links.txt b/lib/lp/services/feeds/stories/xx-links.txt
index 27a2fdf..d50b3dc 100644
--- a/lib/lp/services/feeds/stories/xx-links.txt
+++ b/lib/lp/services/feeds/stories/xx-links.txt
@@ -165,7 +165,7 @@ it must have quotes and html escaped.
     >>> logout()
     >>> browser.open('http://launchpad.test/bad-displayname')
     >>> soup = BeautifulSoup(browser.contents)
-    >>> soup.head.find_all('link', type='application/atom+xml')
+    >>> soup.head.find_all('link', type='application/atom+xml')  # noqa
     [<link href="http://feeds.launchpad.test/bad-displayname/announcements.atom";
         rel="alternate"
         title='Announcements for Bad displayname"&gt;&lt;script&gt;alert("h4x0r")&lt;/script&gt;'
@@ -297,7 +297,7 @@ show a link to the atom feed for that source package's latest bugs.
 
     >>> browser.open('http://bugs.launchpad.test/ubuntu/+source/cnews')
     >>> soup = BeautifulSoup(browser.contents)
-    >>> soup.head.find_all('link', type='application/atom+xml')
+    >>> soup.head.find_all('link', type='application/atom+xml')  # noqa
     [<link
         href="http://feeds.launchpad.test/ubuntu/+source/cnews/latest-bugs.atom";
         rel="alternate" title="Latest Bugs for cnews in Ubuntu"
@@ -367,7 +367,7 @@ atom feed for that branch's revisions.
     >>> url = 'http://code.launchpad.test/~mark/firefox/release--0.9.1'
     >>> browser.open(url)
     >>> soup = BeautifulSoup(browser.contents)
-    >>> soup.head.find_all('link', type='application/atom+xml')
+    >>> soup.head.find_all('link', type='application/atom+xml')  # noqa
     [<link
         href="http://feeds.launchpad.test/~mark/firefox/release--0.9.1/branch.atom";
         rel="alternate"
diff --git a/lib/lp/soyuz/browser/tests/archive-views.txt b/lib/lp/soyuz/browser/tests/archive-views.txt
index 69566a0..727b1f5 100644
--- a/lib/lp/soyuz/browser/tests/archive-views.txt
+++ b/lib/lp/soyuz/browser/tests/archive-views.txt
@@ -497,7 +497,7 @@ tags.
     >>> cprov.archive.description = (
     ...     '<a href="http://example.com/";>http://example.com/</a>')
     >>> login(ANONYMOUS)
-    >>> print(view.archive_description_html.value)
+    >>> print(view.archive_description_html.value)  # noqa
     <p>&lt;a href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt;</p>
 
 The PPA description is linked when the user has made a contribution.
diff --git a/lib/lp/soyuz/browser/tests/distributionsourcepackagerelease-views.txt b/lib/lp/soyuz/browser/tests/distributionsourcepackagerelease-views.txt
index 90ce8e3..35a7d5f 100644
--- a/lib/lp/soyuz/browser/tests/distributionsourcepackagerelease-views.txt
+++ b/lib/lp/soyuz/browser/tests/distributionsourcepackagerelease-views.txt
@@ -29,7 +29,7 @@ upload encapsulated as `ProxiedSourceLibraryFileAlias` objects. Their
 tofiles allowing them to be downloaded using `dget`.
 
     >>> for source_file in dspr_view.files:
-    ...     print(source_file.filename, source_file.http_url)
+    ...     print(source_file.filename, source_file.http_url)  # noqa
     testing-dspr_1.0.dsc
     http://.../ubuntutest/+archive/primary/+sourcefiles/testing-dspr/1.0/testing-dspr_1.0.dsc
 
diff --git a/lib/lp/soyuz/browser/tests/publishing-views.txt b/lib/lp/soyuz/browser/tests/publishing-views.txt
index 9e04d21..18b16c8 100644
--- a/lib/lp/soyuz/browser/tests/publishing-views.txt
+++ b/lib/lp/soyuz/browser/tests/publishing-views.txt
@@ -62,7 +62,7 @@ for each file related with the alsa-utils source publication in ubuntu.
 
     >>> view = create_initialized_view(alsa_pub, "+listing-archive-detailed")
 
-    >>> print(pretty(view.published_source_and_binary_files))
+    >>> print(pretty(view.published_source_and_binary_files))  # noqa
     [{'class': 'source',
       'filename': 'alsa-utils-test_666.dsc',
       'filesize': 28,
@@ -81,6 +81,7 @@ inspected.
     ...     iceweasel_source_pub, "+listing-archive-detailed")
 
     >>> print(pretty(ppa_source_view.published_source_and_binary_files))
+    ... # noqa
     [{'class': 'source',
       'filename': 'firefox_0.9.2.orig.tar.gz',
       'filesize': 9922560,
diff --git a/lib/lp/soyuz/browser/tests/sourcepackage-views.txt b/lib/lp/soyuz/browser/tests/sourcepackage-views.txt
index 9697d91..086736a 100644
--- a/lib/lp/soyuz/browser/tests/sourcepackage-views.txt
+++ b/lib/lp/soyuz/browser/tests/sourcepackage-views.txt
@@ -107,7 +107,7 @@ sourcepackagename before passing to regexp.
 
     >>> libc = ubuntu.getSourcePackage('libstdc++').getVersion('b8p')
     >>> libc_view = queryMultiAdapter((libc, request), name="+changelog")
-    >>> print(libc_view.changelog_entry)
+    >>> print(libc_view.changelog_entry)  # noqa
     libstdc++ (9.9-1) hoary; urgency=high
     <BLANKLINE>
      * Placeholder
diff --git a/lib/lp/soyuz/doc/gina.txt b/lib/lp/soyuz/doc/gina.txt
index ad2b8fa..1c991ea 100644
--- a/lib/lp/soyuz/doc/gina.txt
+++ b/lib/lp/soyuz/doc/gina.txt
@@ -224,7 +224,9 @@ Check that x11proto-damage has its Build-Depends-Indep value correctly set:
 
 Check if the changelog message was stored correcly:
 
-    >>> print(x11p.changelog_entry) #doctest: -NORMALIZE_WHITESPACE
+    >>> print(x11p.changelog_entry)
+    ... # noqa
+    ... # doctest: -NORMALIZE_WHITESPACE
     x11proto-damage (6.8.99.7-2) breezy; urgency=low
     <BLANKLINE>
       * Add dependency on x11proto-fixes-dev.
@@ -238,6 +240,7 @@ Check if the changelog message was stored correcly:
 Check that the changelog was uploaded to the librarian correctly:
 
     >>> print(six.ensure_text(x11p.changelog.read()))
+    ... # noqa
     x11proto-damage (6.8.99.7-2) breezy; urgency=low
     <BLANKLINE>
       * Add dependency on x11proto-fixes-dev.
diff --git a/lib/lp/soyuz/doc/soyuz-upload.txt b/lib/lp/soyuz/doc/soyuz-upload.txt
index 6f049e9..2b3ff99 100644
--- a/lib/lp/soyuz/doc/soyuz-upload.txt
+++ b/lib/lp/soyuz/doc/soyuz-upload.txt
@@ -500,6 +500,7 @@ required entry for 'etherwake':
     ...     for source in Sources.iter_paragraphs(sources_file):
     ...         pprint_deb822(source)
     ...     print('END')
+    ... # noqa
     Architecture: any
     Binary: etherwake
     Build-Depends: debhelper (>> 2.0)
@@ -613,7 +614,9 @@ and SHA256) for each index published.
     >>> with open("/var/tmp/archive/ubuntutest/dists/"
     ...           "breezy-autotest/Release") as f:
     ...     releasefile_contents = f.read()
-    >>> print(releasefile_contents + '\nEND') #doctest: -NORMALIZE_WHITESPACE
+    >>> print(releasefile_contents + '\nEND')
+    ... # noqa
+    ... # doctest: -NORMALIZE_WHITESPACE
     Origin: ubuntutest
     Label: ubuntutest
     Suite: breezy-autotest
diff --git a/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt b/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt
index 345c295..4f30fa7 100644
--- a/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt
+++ b/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt
@@ -172,10 +172,10 @@ and open questions the package has.
 
 Links exist to jump to the query page for the new bugs and open questions.
 
-    >>> print(user_browser.getLink("0 new bugs").url)
+    >>> print(user_browser.getLink("0 new bugs").url)  # noqa
     http://bugs.launchpad.test/ubuntu/+source/iceweasel/+bugs?field.status:list=NEW
 
-    >>> print(user_browser.getLink("0 open questions").url)
+    >>> print(user_browser.getLink("0 open questions").url)  # noqa
     http://answers.launchpad.test/ubuntu/+source/iceweasel/+questions?field.status=OPEN
 
 The page also has a table that shows the distro series in which the package is
diff --git a/lib/lp/soyuz/stories/ppa/xx-ppa-files.txt b/lib/lp/soyuz/stories/ppa/xx-ppa-files.txt
index 00fef87..2c734be 100644
--- a/lib/lp/soyuz/stories/ppa/xx-ppa-files.txt
+++ b/lib/lp/soyuz/stories/ppa/xx-ppa-files.txt
@@ -341,7 +341,7 @@ redirect to the files for the default named PPA.
     >>> print(http(six.ensure_binary(r"""
     ... GET %s HTTP/1.1
     ... """ % file_lp_url_without_ppa_name.replace(
-    ...     'http://launchpad.test', ''))))
+    ...     'http://launchpad.test', ''))))  # noqa
     HTTP/1.1 301 Moved Permanently
     ...
     Location: http://localhost/~no-priv/+archive/ubuntu/ppa/+files/test-pkg_1.0.dsc
@@ -405,7 +405,7 @@ remains in the PPA page, but it's not a link anymore.
 If by any chance, mostly bookmarked URLs, it gets accessed via the
 LP proxy URL a proper NotFound error is raised.
 
-    >>> print(file_lp_url)
+    >>> print(file_lp_url)  # noqa
     http://launchpad.test/~no-priv/+archive/ubuntu/ppa/+sourcefiles/test-pkg/1.0/test-pkg_1.0.dsc
 
     >>> not_found_file = http(six.ensure_binary(r"""
diff --git a/lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt b/lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt
index 605f805..1fe0292 100644
--- a/lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt
+++ b/lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt
@@ -183,6 +183,6 @@ The 'First' and 'Previous' links, however, are now active.
     >>> anon_browser.getLink('First').url
     'http://launchpad.test/%7Ecprov/+archive/ubuntu/ppa/+index?batch=1'
 
-    >>> anon_browser.getLink('Previous').url
+    >>> anon_browser.getLink('Previous').url  # noqa
     'http://launchpad.test/%7Ecprov/+archive/ubuntu/ppa/+index?batch=1&direction=backwards&memo=2&start=1'
 
diff --git a/lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt b/lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt
index 65cccda..97cf29d 100644
--- a/lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt
+++ b/lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt
@@ -425,7 +425,7 @@ is also included in the statistics portlet.
 Current build activity is linked to the builds page with the relevant
 filter.
 
-    >>> print(anon_browser.getLink('1 package building').url)
+    >>> print(anon_browser.getLink('1 package building').url)  # noqa
     http://launchpad.test/~cprov/+archive/ubuntu/ppa/+builds?build_state=building
 
 
@@ -594,7 +594,7 @@ The key fingerprint links to the actual key available in the ubuntu
 keyserver.
 
     >>> print(anon_browser.getLink(
-    ...     '1024D/ABCDEF0123456789ABCDDCBA0000111112345678').url)
+    ...     '1024D/ABCDEF0123456789ABCDDCBA0000111112345678').url)  # noqa
     https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=index&search=0xABCDEF0123456789ABCDDCBA0000111112345678
 
 Using software from a PPA can be hard for novices. We offer two
diff --git a/lib/lp/soyuz/stories/soyuz/xx-build-record.txt b/lib/lp/soyuz/stories/soyuz/xx-build-record.txt
index 9cb475d..33bb61b 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-build-record.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-build-record.txt
@@ -474,7 +474,7 @@ The 'Build status' section is identical for PPAs.
     >>> print(anon_browser.getLink('Bob The Builder').url)
     http://launchpad.test/builders/bob
 
-    >>> print(anon_browser.getLink('buildlog').url)
+    >>> print(anon_browser.getLink('buildlog').url)  # noqa
     http://launchpad.test/~cprov/+archive/ubuntu/ppa/+build/.../+files/buildlog_...
 
     >>> print(anon_browser.getLink('ppa-test-bin_1.0_i386.changes').url)
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt
index b05ef78..14b37d6 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt
@@ -200,7 +200,7 @@ via `dget`.
     ac512102db9724bee18f26945efeeb82fdab89819e64e120fbfda755ca50c2c6
     View changes file
 
-    >>> print(anon_browser.getLink('testing-dspr_1.0.dsc').url)
+    >>> print(anon_browser.getLink('testing-dspr_1.0.dsc').url)  # noqa
     http://.../ubuntutest/+archive/primary/+sourcefiles/testing-dspr/1.0/testing-dspr_1.0.dsc
 
 The 'Downloads' section also lists and link to package diffs when they
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt
index b7648c2..740fce3 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt
@@ -25,7 +25,7 @@ This page provides the publishing history of this BinaryPackage within
 this architecture:
 
     >>> table = find_tag_by_id(browser.contents, 'publishing-summary')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Date                  Status    Target     Pocket  Component Section  Priority  Phased updates  Version
     2006-04-11 13:00:01 UTC Published...Warty i386 release main     base Important                      1.0
     Published on 2006-04-11
@@ -182,7 +182,7 @@ This page provides the publishing history of this BinaryPackage within
 this architecture:
 
     >>> print(extract_text(
-    ...     find_tag_by_id(browser.contents, 'publishing-summary')))
+    ...     find_tag_by_id(browser.contents, 'publishing-summary')))  # noqa
     Date                  Status    Target     Pocket  Component Section Priority  Phased updates  Version
     2007-08-09 21:56:39 UTC Published...B...t i386 release partner devel Optional                  1.0-1
     Published on 2007-08-09
@@ -256,6 +256,7 @@ distroseries and archive are shown.
 
     >>> print(extract_text(
     ...    find_tag_by_id(anon_browser.contents, 'publishing-summary')))
+    ... # noqa
     Date           Status      Target     Pocket  Component Section  Priority  Phased updates  Version
     2007-09-13 ... Superseded...Warty i386 release universe editors Important                    0.1-1
       Published on 2006-01-26
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt
index 2881c1a..1ec9a52 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt
@@ -44,7 +44,7 @@ about Firefox's publishing history.
 
     >>> browser.getLink("View full publishing history").click()
     >>> table = find_tag_by_id(browser.contents, 'publishing-summary')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Date                      Status     Target   Pocket   Component   Section   Version
     2006-02-13 12:19:00 UTC   Published  Warty    release  main        web       0.9
     Published on 2006-02-13
@@ -89,7 +89,7 @@ published version) if they are available:
     File Size SHA-256 Checksum
     firefox_0.9.2.orig.tar.gz 9.5 MiB ...
 
-    >>> print(browser.getLink("firefox_0.9.2.orig.tar.gz").url)
+    >>> print(browser.getLink("firefox_0.9.2.orig.tar.gz").url)  # noqa
     http://launchpad.test/ubuntu/+archive/primary/+sourcefiles/mozilla-firefox/0.9/firefox_0.9.2.orig.tar.gz
 
 This page also provides links to the binary packages generated by this
@@ -286,7 +286,7 @@ And also download the files contained in this source, like '.orig',
     File Size SHA-256 Checksum
     firefox_0.9.2.orig.tar.gz 9.5 MiB ...
 
-    >>> print(browser.getLink("firefox_0.9.2.orig.tar.gz").url)
+    >>> print(browser.getLink("firefox_0.9.2.orig.tar.gz").url)  # noqa
     http://launchpad.test/ubuntu/+archive/primary/+sourcefiles/mozilla-firefox/0.9/firefox_0.9.2.orig.tar.gz
 
 If we go to the same page for alsa-utils, the changelog has text that is
@@ -355,10 +355,11 @@ published version) if they are available:
     commercialpackage_1.0-1.dsc 567 bytes ...
 
     >>> print(browser.getLink("commercialpackage_1.0.orig.tar.gz").url)
+    ... # noqa
     http://launchpad.test/ubuntu/+archive/partner/+sourcefiles/commercialpackage/1.0-1/commercialpackage_1.0.orig.tar.gz
-    >>> print(browser.getLink("commercialpackage_1.0-1.diff.gz").url)
+    >>> print(browser.getLink("commercialpackage_1.0-1.diff.gz").url)  # noqa
     http://launchpad.test/ubuntu/+archive/partner/+sourcefiles/commercialpackage/1.0-1/commercialpackage_1.0-1.diff.gz
-    >>> print(browser.getLink("commercialpackage_1.0-1.dsc").url)
+    >>> print(browser.getLink("commercialpackage_1.0-1.dsc").url)  # noqa
     http://launchpad.test/ubuntu/+archive/partner/+sourcefiles/commercialpackage/1.0-1/commercialpackage_1.0-1.dsc
 
 This page also provides links to the binary packages generated by this
@@ -392,7 +393,7 @@ The text is generated automatically by appending:
 for each published version.
 
     >>> browser.getLink("View changelog").click()
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://launchpad.test/ubuntu/breezy-autotest/+source/commercialpackage/+changelog'
 
     >>> tag = find_tag_by_id(browser.contents, 'commercialpackage_1.0-1')
@@ -435,10 +436,11 @@ And also download the files contained in this source, like '.orig',
     commercialpackage_1.0-1.dsc 567 bytes ...
 
     >>> print(browser.getLink("commercialpackage_1.0.orig.tar.gz").url)
+    ... # noqa
     http://launchpad.test/ubuntu/+archive/partner/+sourcefiles/commercialpackage/1.0-1/commercialpackage_1.0.orig.tar.gz
-    >>> print(browser.getLink("commercialpackage_1.0-1.diff.gz").url)
+    >>> print(browser.getLink("commercialpackage_1.0-1.diff.gz").url)  # noqa
     http://launchpad.test/ubuntu/+archive/partner/+sourcefiles/commercialpackage/1.0-1/commercialpackage_1.0-1.diff.gz
-    >>> print(browser.getLink("commercialpackage_1.0-1.dsc").url)
+    >>> print(browser.getLink("commercialpackage_1.0-1.dsc").url)  # noqa
     http://launchpad.test/ubuntu/+archive/partner/+sourcefiles/commercialpackage/1.0-1/commercialpackage_1.0-1.dsc
 
 
@@ -459,6 +461,7 @@ distroseries and archive are shown.
 
     >>> print(extract_text(
     ...    find_tag_by_id(anon_browser.contents, 'publishing-summary')))
+    ... # noqa
     Date           Status     Target    Pocket  Component Section Version
     2006-02-15 ... Pending    Warty     release main      editors 1.0.9a-4ubuntu1
       Copied from ubuntu hoary in Primary Archive for Ubuntu Linux
diff --git a/lib/lp/soyuz/stories/soyuz/xx-packagepublishinghistory.txt b/lib/lp/soyuz/stories/soyuz/xx-packagepublishinghistory.txt
index dd60f1c..c12fa2d 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-packagepublishinghistory.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-packagepublishinghistory.txt
@@ -51,7 +51,7 @@ intermediate archive information.
     ...     '+publishinghistory' % new_distro.name)
 
     >>> table = find_tag_by_id(anon_browser.contents, 'publishing-summary')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Date    Status    Target          Pocket   Component Section Version
     ... UTC Pending   Foo-series      release  main      base    666
     Copied from ubuntutest breezy-autotest in Primary Archive for Ubuntu Test by Person123
@@ -79,7 +79,7 @@ original distribution was Ubuntutest breezy-autotest.
     ...     'http://launchpad.test/%s/+source/test-history/'
     ...     '+publishinghistory' % new_distro.name)
     >>> table = find_tag_by_id(anon_browser.contents, 'publishing-summary')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Date    Status    Target          Pocket   Component Section Version
     ... UTC Pending   Another-series  release  main      base    666
     Copied from Primary Archive for Foo-distro by Person123
@@ -101,7 +101,7 @@ messages.
     ...     'http://launchpad.test/%s/+source/test-history/'
     ...     '+publishinghistory' % new_distro.name)
     >>> table = find_tag_by_id(anon_browser.contents, 'publishing-summary')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
     Date    Status    Target          Pocket   Component Section Version
     ... UTC Pending   Another-series  release  universe  base    666
     Copied from ubuntutest breezy-autotest in Primary Archive for Ubuntu Test by Foo Bar
@@ -176,8 +176,7 @@ distro-arch-series-binarypackage page.
 
     >>> anon_browser.open(url)
     >>> table = find_tag_by_id(anon_browser.contents, 'publishing-summary')
-    >>> print(extract_text(table))
+    >>> print(extract_text(table))  # noqa
         Date    Status    Target     Pocket   Component Section Priority Phased updates Version
     ... UTC Pending   ubuntutest Breezy ... release  main  base Standard 666
     Copied from ubuntutest breezy-autotest-release i386 in Primary Archive for Ubuntu Test
-
diff --git a/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt b/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt
index 6824527..ad0257f 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt
@@ -39,7 +39,7 @@ component:
     >>> motu_browser.open(
     ...     "http://launchpad.test/ubuntu/breezy-autotest/";)
     >>> motu_browser.getLink("All uploads").click()
-    >>> print_queue(motu_browser.contents)
+    >>> print_queue(motu_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     netapplet...ddtp... -                                           Release 2006...
     netapplet...dist... -                                           Release 2006...
diff --git a/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
index 00d8cca..7b8a8f2 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
@@ -66,7 +66,7 @@ Viewing the current queue, by default the NEW queue.
     ...     for row in queue_rows:
     ...         print(extract_text(row))
 
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     netapplet...ddtp... -                                           Release 2006-...
     netapplet...dist... -                                           Release 2006-...
@@ -96,7 +96,7 @@ UNAPPROVED one.
     >>> anon_browser.getControl(
     ...     name="queue_state", index=0).displayValue = ['Unapproved']
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version   Component Section  Priority Sets Pocket   When
     lang...-de (source) 1.0       main      trans... low           Proposed 2007-...
     netapplet...ddtp... -                                          Backp... 2006-...
@@ -109,13 +109,13 @@ custom-upload filename.
 
     >>> anon_browser.getControl(name="queue_text").value = 'language'
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version   Component Section  Priority Sets Pocket   When
     lang...-de (source) 1.0       main      trans... low           Proposed 2007-...
 
     >>> anon_browser.getControl(name="queue_text").value = 'netapplet'
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version   Component Section  Priority Sets Pocket   When
     netapplet...ddtp... -                                          Backp... 2006-...
     netapplet...(raw-translations) -                               Updates  2006-...
@@ -124,7 +124,7 @@ custom-upload filename.
     ...     name="queue_state", index=0).displayValue = ['New']
     >>> anon_browser.getControl(name="queue_text").value = 'pmount'
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version   Component Section  Priority Sets Pocket   When
     pmount (i386)       0.1-1                                      Release  2006-...
 
@@ -156,7 +156,7 @@ Package sets from other series are not shown.
     ...     name="queue_state", index=0).displayValue = ['New']
     >>> anon_browser.getControl(name="queue_text").value = ''
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version   Component Section  Priority Sets           Pocket  When
     netapplet...ddtp... -                                                    Release 2006-...
     netapplet...dist... -                                                    Release 2006-...
@@ -336,7 +336,7 @@ Go back to the "new" queue and accept "bar":
 
     >>> upload_manager_browser.open(
     ...    "http://localhost/ubuntu/breezy-autotest/+queue";)
-    >>> print_queue(upload_manager_browser.contents)
+    >>> print_queue(upload_manager_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     bar (source)        1.0-1       universe  devel   low           Release ...
     netapplet...ddtp... -                                           Release 2006-...
@@ -349,7 +349,7 @@ Go back to the "new" queue and accept "bar":
     >>> upload_manager_browser.getControl(
     ...     name="QUEUE_ID").value = [str(bar_queue_id)]
     >>> upload_manager_browser.getControl(name="Accept").click()
-    >>> print_queue(upload_manager_browser.contents)
+    >>> print_queue(upload_manager_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     netapplet...ddtp... -                                           Release 2006-...
     netapplet...dist... -                                           Release 2006-...
@@ -404,7 +404,7 @@ The item is moved to the ACCEPTED queue:
     >>> upload_manager_browser.getControl(
     ...    name="queue_state", index=0).displayValue = ['Accepted']
     >>> upload_manager_browser.getControl("Update").click()
-    >>> print_queue(upload_manager_browser.contents)
+    >>> print_queue(upload_manager_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     moz...irefox (i386) 0.9                                         Release 2006-...
 
@@ -413,7 +413,7 @@ Going back to the "new" queue, we can see our item has gone:
     >>> upload_manager_browser.getControl(
     ...    name="queue_state", index=0).displayValue = ['New']
     >>> upload_manager_browser.getControl("Update").click()
-    >>> print_queue(upload_manager_browser.contents)
+    >>> print_queue(upload_manager_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     netapplet...ddtp... -                                           Release 2006-...
     netapplet...dist... -                                      Release 2006-...
@@ -488,7 +488,7 @@ overridden:
     OK: netapplet(restricted/admin)
     OK: pmount(restricted/admin/extra)
 
-    >>> print_queue(upload_manager_browser.contents)
+    >>> print_queue(upload_manager_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     netapplet...ddtp... -                                           Release 2006-...
     netapplet...dist... -                                           Release 2006-...
@@ -500,7 +500,7 @@ overridden values.
     >>> anon_browser.getControl(
     ...     name="queue_state", index=0).displayValue=['Accepted']
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     pmount (i386)       0.1-1                                       Release 2006-...
     ...
@@ -520,7 +520,7 @@ source upload, and we can see its overridden values there:
     >>> anon_browser.getControl(
     ...     name="queue_state", index=0).displayValue=['Done']
     >>> anon_browser.getControl("Update").click()
-    >>> print_queue(anon_browser.contents)
+    >>> print_queue(anon_browser.contents)  # noqa
     Package             Version     Component  Section Priority Sets Pocket  When
     ...
     netapplet (source)  0.99.6-1    restricted admin   low ...
@@ -543,7 +543,7 @@ Rejecting 'alsa-utils' source:
     >>> print_feedback_messages(upload_manager_browser.contents)
     OK: alsa-utils
 
-    >>> print_queue(upload_manager_browser.contents)
+    >>> print_queue(upload_manager_browser.contents)  # noqa
     Package             Version     Component Section Priority Sets Pocket  When
     netapplet...ddtp... -                                           Release 2006-...
     netapplet...dist... -                                           Release 2006-...
diff --git a/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt b/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt
index a78f610..2a50743 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt
@@ -73,7 +73,7 @@ bots from picking them up):
     >>> anon_browser.open(
     ...     "http://launchpad.test/ubuntu/hoary/+source/alsa-utils/";
     ...     "+changelog")
-    >>> print(extract_text(find_main_content(anon_browser.contents)))
+    >>> print(extract_text(find_main_content(anon_browser.contents)))  # noqa
     Change logs for ...alsa-utils... in Hoary
     ...
     -- Sample Person &lt;email address hidden&gt; Tue, 7 Feb 2006 12:10:08 +0300
diff --git a/lib/lp/soyuz/stories/webservice/xx-archive.txt b/lib/lp/soyuz/stories/webservice/xx-archive.txt
index 42cb4a3..47006ac 100644
--- a/lib/lp/soyuz/stories/webservice/xx-archive.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-archive.txt
@@ -176,7 +176,7 @@ This is a permission that allows a team to upload to a component:
     >>> url = ('/ubuntu/+archive/primary/+upload/ubuntu-team'
     ...     '?type=component&item=main')
     >>> ubuntu_main_permission = webservice.get(url).jsonBody()
-    >>> pprint_entry(ubuntu_main_permission)
+    >>> pprint_entry(ubuntu_main_permission)  # noqa
     archive_link: 'http://.../ubuntu/+archive/primary'
     component_name: 'main'
     date_created: ...
@@ -192,7 +192,7 @@ This is a permission that allows an individual to upload a source package.
     >>> url = ('/ubuntu/+archive/primary/+upload/carlos'
     ...     '?type=packagename&item=mozilla-firefox')
     >>> carlos_mozilla_permission = webservice.get(url).jsonBody()
-    >>> pprint_entry(carlos_mozilla_permission)
+    >>> pprint_entry(carlos_mozilla_permission)  # noqa
     archive_link: 'http://.../ubuntu/+archive/primary'
     component_name: None
     date_created: ...
@@ -209,7 +209,7 @@ This is a queue admin right for ubuntu-team:
     >>> url = ('/ubuntu/+archive/primary/+queue-admin/ubuntu-team'
     ...     '?type=component&item=main')
     >>> ubuntu_main_permission = webservice.get(url).jsonBody()
-    >>> pprint_entry(ubuntu_main_permission)
+    >>> pprint_entry(ubuntu_main_permission)  # noqa
     archive_link: 'http://.../ubuntu/+archive/primary'
     component_name: 'main'
     date_created: ...
@@ -226,7 +226,7 @@ And one for an individual:
     >>> url = ('/ubuntu/+archive/primary/+queue-admin/name12'
     ...     '?type=component&item=universe')
     >>> name16_admin_permission = webservice.get(url).jsonBody()
-    >>> pprint_entry(name16_admin_permission)
+    >>> pprint_entry(name16_admin_permission)  # noqa
     archive_link: 'http://.../ubuntu/+archive/primary'
     component_name: 'universe'
     date_created: ...
@@ -273,7 +273,7 @@ archive.  First, define some general helper functions.
     ...         api_version='devel').jsonBody()
     ...     show_permission_entries(permissions)
 
-    >>> show_all_permissions(ubuntu_devel['main_archive_link'])
+    >>> show_all_permissions(ubuntu_devel['main_archive_link'])  # noqa
     Archive Upload Rights ...~carlos None mozilla-firefox None None
     Archive Upload Rights ...~ubuntu-team main None None None
     Archive Upload Rights ...~ubuntu-team restricted None None None
@@ -407,7 +407,7 @@ for a person to upload a package.
 
     >>> new_permission = user_webservice.get(
     ...     response.getHeader('Location')).jsonBody()
-    >>> print(new_permission['self_link'])
+    >>> print(new_permission['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+upload/name12?type=packagename&item=mozilla-firefox
 
     >>> show_mozilla_permissions()
@@ -468,7 +468,7 @@ component.
 
     >>> new_permission = user_webservice.get(
     ...     response.getHeader('Location')).jsonBody()
-    >>> print(new_permission['self_link'])
+    >>> print(new_permission['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+upload/name12?type=component&item=restricted
 
     >>> show_component_permissions()
@@ -599,7 +599,7 @@ queues in a particular component.
 
     >>> new_permission = ubuntu_owner_webservice.get(
     ...     response.getHeader('Location')).jsonBody()
-    >>> print(new_permission['self_link'])
+    >>> print(new_permission['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+queue-admin/name12?type=component&item=partner
 
     >>> show_components_for_admin(name12)
@@ -658,7 +658,7 @@ newPocketUploader adds a new permission for a person to upload to a pocket.
 
     >>> new_permission = user_webservice.get(
     ...     response.getHeader('Location')).jsonBody()
-    >>> print(new_permission['self_link'])
+    >>> print(new_permission['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+upload/name12?type=pocket&item=PROPOSED
 
     >>> show_pocket_permissions('Proposed')
@@ -737,7 +737,7 @@ distroseries queues in a particular pocket.
 
     >>> new_permission = ubuntu_owner_webservice.get(
     ...     response.getHeader('Location')).jsonBody()
-    >>> print(new_permission['self_link'])
+    >>> print(new_permission['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+queue-admin/name12?type=pocket&item=SECURITY
 
     >>> show_pockets_for_admin(name12)
@@ -762,9 +762,9 @@ It can also grant series-specific pocket queue admin permissions.
     HTTP/1.1 201 Created
     ...
 
-    >>> print(new_permissions[0]['self_link'])
+    >>> print(new_permissions[0]['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+queue-admin/ubuntu-owner?type=pocket&item=SECURITY&series=hoary
-    >>> print(new_permissions[1]['self_link'])
+    >>> print(new_permissions[1]['self_link'])  # noqa
     http://.../ubuntu/+archive/primary/+queue-admin/ubuntu-owner?type=pocket&item=SECURITY&series=grumpy
 
     >>> show_pockets_for_admin(ubuntu_owner_ws)
diff --git a/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt b/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt
index 3529000..59991fc 100644
--- a/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt
@@ -190,6 +190,7 @@ Detailed download counts are also available from the getDownloadCounts method.
 A detailed count object can be retrieved by its URL.
 
     >>> pprint_entry(webservice.get(counts[1]['self_link']).jsonBody())
+    ... # noqa
     archive_link: 'http://.../~cprov/+archive/ubuntu/ppa'
     binary_package_name: 'mozilla-firefox'
     binary_package_version: '1.0'
@@ -208,6 +209,7 @@ We can also filter by date.
     1
 
     >>> pprint_entry(webservice.get(counts[0]['self_link']).jsonBody())
+    ... # noqa
     archive_link: 'http://.../~cprov/+archive/ubuntu/ppa'
     binary_package_name: 'mozilla-firefox'
     binary_package_version: '1.0'
diff --git a/lib/lp/soyuz/stories/webservice/xx-builds.txt b/lib/lp/soyuz/stories/webservice/xx-builds.txt
index 7f72ed7..1e7a44a 100644
--- a/lib/lp/soyuz/stories/webservice/xx-builds.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-builds.txt
@@ -43,7 +43,7 @@ Retrieve a source publication:
 of properties:
 
     >>> from lazr.restful.testing.webservice import pprint_entry
-    >>> pprint_entry(builds['entries'][0])
+    >>> pprint_entry(builds['entries'][0])  # noqa
     arch_tag: 'i386'
     archive_link: 'http://.../beta/~cprov/+archive/ubuntu/ppa'
     builder_link: 'http://.../beta/builders/bob'
@@ -76,7 +76,7 @@ Whereas the 1.0 webservice for builds maintains the old property names
 
     >>> builds_1_0 = webservice.named_get(
     ...     source_pub['self_link'].replace('beta', '1.0'), 'getBuilds')
-    >>> pprint_entry(builds_1_0.jsonBody()['entries'][0])
+    >>> pprint_entry(builds_1_0.jsonBody()['entries'][0])  # noqa
     arch_tag: 'i386'
     archive_link: 'http://.../~cprov/+archive/ubuntu/ppa'
     build_log_url:
@@ -108,7 +108,7 @@ devel webservice also contains build date_started and duration.
 
     >>> builds_devel = webservice.named_get(
     ...     source_pub['self_link'].replace('beta', 'devel'), 'getBuilds')
-    >>> pprint_entry(builds_devel.jsonBody()['entries'][0])
+    >>> pprint_entry(builds_devel.jsonBody()['entries'][0])  # noqa
     arch_tag: 'i386'
     archive_link: 'http://.../~cprov/+archive/ubuntu/ppa'
     build_log_url:
diff --git a/lib/lp/soyuz/stories/webservice/xx-packageset.txt b/lib/lp/soyuz/stories/webservice/xx-packageset.txt
index 499d671..2ac46ec 100644
--- a/lib/lp/soyuz/stories/webservice/xx-packageset.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-packageset.txt
@@ -594,7 +594,7 @@ Let's see what we've got:
 
     >>> new_permission = webservice.get(
     ...     response.getHeader('Location')).jsonBody()
-    >>> pprint_entry(new_permission)
+    >>> pprint_entry(new_permission)  # noqa
     archive_link: 'http://.../+archive/primary'
     component_name: None
     date_created: ...
@@ -624,7 +624,7 @@ package set since we're disallowing the use of the package set hierarchy.
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getUploadersForPackageset', {},
     ...     packageset=firefox['self_link'])
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/name12?type=packageset&item=firefox&series=hoary
 
 Same query, this time allowing the use of the package set hierarchy, finds
@@ -633,7 +633,7 @@ the permission for the 'mozilla' package set as well.
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getUploadersForPackageset', {},
     ...     packageset=firefox['self_link'], direct_permissions=False)
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/name12?type=packageset&item=firefox&series=hoary
     http://.../+archive/primary/+upload/name12?type=packageset&item=mozilla&series=hoary
 
@@ -653,7 +653,7 @@ shows only the remaining permission for the 'firefox' package set.
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getUploadersForPackageset', {},
     ...     packageset=firefox['self_link'], direct_permissions=False)
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/name12?type=packageset&item=firefox&series=hoary
 
 Let's grant 'cprov' an upload permission to 'mozilla' and 'thunderbird'.
@@ -680,7 +680,7 @@ We can view the package set based permissions granted to 'cprov' as follows:
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getPackagesetsForUploader', {},
     ...     person=cprov['self_link'])
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/cprov?type=packageset&item=mozilla&series=hoary
     http://.../+archive/primary/+upload/cprov?type=packageset&item=thunderbird&series=hoary
 
@@ -691,7 +691,7 @@ Let's check what package set based upload permissions 'cprov' has for the
     ...     ubuntu['main_archive_link'], 'getPackagesetsForSourceUploader',
     ...     {}, sourcepackagename='thunderbird',
     ...     person=cprov['self_link'])
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/cprov?type=packageset&item=mozilla&series=hoary
     http://.../+archive/primary/+upload/cprov?type=packageset&item=thunderbird&series=hoary
 
@@ -706,7 +706,7 @@ to it?
     ...     ubuntu['main_archive_link'], 'getPackagesetsForSourceUploader',
     ...     {}, sourcepackagename='mozilla-firefox',
     ...     person=cprov['self_link'])
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/cprov?type=packageset&item=mozilla&series=hoary
 
 Yes, and, again via the 'mozilla' package set.
@@ -824,7 +824,7 @@ Does the new archive permission show up?
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getPackagesetsForUploader', {},
     ...     person=name12['self_link'])
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://...+archive/primary/+upload/name12?type=packageset&item=firefox&series=hoary
     http://...+archive/primary/+upload/name12?type=packageset&item=thunderbird&series=grumpy
 
@@ -846,7 +846,7 @@ permissions apply to a source package irrespective of the principal.
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getPackagesetsForSource',
     ...     {}, sourcepackagename='mozilla-firefox')
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/name12?type=packageset&item=firefox&series=hoary
 
 The listing above only shows the *direct* upload permission granted to
@@ -858,7 +858,7 @@ permissions arising from the package set hierarchy as well.
     >>> response = webservice.named_get(
     ...     ubuntu['main_archive_link'], 'getPackagesetsForSource',
     ...     {}, sourcepackagename='mozilla-firefox', direct_permissions=False)
-    >>> print_payload(response)
+    >>> print_payload(response)  # noqa
     http://.../+archive/primary/+upload/name12?type=packageset&item=firefox&series=hoary
     http://.../+archive/primary/+upload/cprov?type=packageset&item=mozilla&series=hoary
 
diff --git a/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt b/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt
index c75f1d6..10cc3f5 100644
--- a/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt
@@ -149,6 +149,7 @@ publication to play with first.
 
     >>> print(webservice.named_get(
     ...     pubs['entries'][0]['self_link'], 'changesFileUrl').jsonBody())
+    ... # noqa
     http://.../~cprov/+archive/ubuntu/ppa/+files/testwebservice_666_source.changes
 
 
@@ -376,7 +377,7 @@ for this package:
     ...     entry['self_link'] for entry in pubs['entries']):
     ...     source_urls = webservice.named_get(
     ...         pub_link, 'sourceFileUrls').jsonBody()
-    ...     print(pretty(source_urls))
+    ...     print(pretty(source_urls))  # noqa
     ['http://.../~cprov/+archive/ubuntu/ppa/+sourcefiles/cdrkit/1.0/foobar-1.0.dsc']
     ['http://.../~cprov/+archive/ubuntu/ppa/+sourcefiles/iceweasel/1.0/firefox_0.9.2.orig.tar.gz',
      'http://.../~cprov/+archive/ubuntu/ppa/+sourcefiles/iceweasel/1.0/iceweasel-1.0.dsc']
@@ -389,7 +390,7 @@ binaryFileUrls() is similar:
     ...     entry['self_link'] for entry in pubs['entries']):
     ...     binary_urls = webservice.named_get(
     ...         pub_link, 'binaryFileUrls').jsonBody()
-    ...     print(pretty(binary_urls))
+    ...     print(pretty(binary_urls))  # noqa
     []
     ['http://.../~cprov/+archive/ubuntu/ppa/+files/mozilla-firefox_0.9_i386.deb']
     []
diff --git a/lib/lp/translations/doc/potemplate.txt b/lib/lp/translations/doc/potemplate.txt
index 3a4fc80..3f91d27 100644
--- a/lib/lp/translations/doc/potemplate.txt
+++ b/lib/lp/translations/doc/potemplate.txt
@@ -294,7 +294,7 @@ Templates can be exported to its native format.
     ...     if 'X-Launchpad-Export-Date' in line:
     ...         # Avoid a time bomb in our tests and ignore this field.
     ...         continue
-    ...     print(line)
+    ...     print(line)  # noqa
     #, fuzzy
     msgid ""
     msgstr ""
diff --git a/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt b/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt
index 167459c..62ed7b8 100644
--- a/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt
+++ b/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt
@@ -153,5 +153,5 @@ URL uses '+latest-full-language-pack'.
 
     >>> print(browser.getLink('2007-09-10 19:15:01 UTC').url)
     http.../72/ubuntu-hoary-translations-update.tar.gz
-    >>> print(browser.getLink('2007-09-10 19:15:19 UTC').url)
+    >>> print(browser.getLink('2007-09-10 19:15:19 UTC').url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+latest-delta-language-pack
diff --git a/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt b/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt
index 04ffefa..15c7a95 100644
--- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt
+++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt
@@ -116,7 +116,7 @@ Now, we attach a new file to an already existing translation resource.
     >>> upload.add_file(BytesIO(b'# foo\n'),
     ...   'text/x-gettext-translation-template', 'evolution.pot')
     >>> browser.getControl('Upload').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+upload
     >>> for tag in find_tags_by_class(browser.contents, 'message'):
     ...     print(tag.decode_contents())
diff --git a/lib/lp/translations/stories/navigation-links/pofile.txt b/lib/lp/translations/stories/navigation-links/pofile.txt
index a69c22f..351b23e 100644
--- a/lib/lp/translations/stories/navigation-links/pofile.txt
+++ b/lib/lp/translations/stories/navigation-links/pofile.txt
@@ -27,7 +27,7 @@ Taking an IPOFile for ISourcePackage context:
     >>> admin_browser.open(
     ...     'http://translations.launchpad.test/ubuntu/hoary/+source/'
     ...     'evolution/+pots/evolution-2.2/es')
-    >>> print(admin_browser.url)
+    >>> print(admin_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es
 
 The Application tabs should point to IDistributionSourcePackage URLs.
diff --git a/lib/lp/translations/stories/navigation-links/pomsgset.txt b/lib/lp/translations/stories/navigation-links/pomsgset.txt
index d561963..be7fe16 100644
--- a/lib/lp/translations/stories/navigation-links/pomsgset.txt
+++ b/lib/lp/translations/stories/navigation-links/pomsgset.txt
@@ -10,7 +10,7 @@ Taking an IPOMsgSet for IProductSeries context:
 We get a +translate page because that's the only page for an IPOMsgSet and the
 system forwards automatically there.
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/es/1/+translate
 
 The Application tabs should point to IProductSeries URLs.
@@ -32,7 +32,7 @@ Taking an IPOMsgSet for ISourcePackage context:
 We get a +translate page because that's the only page for an IPOMsgSet and the
 system forwards automatically there.
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/1/+translate
 
 The Application tabs should point to ISourcePackage URLs.
diff --git a/lib/lp/translations/stories/navigation-links/potemplate.txt b/lib/lp/translations/stories/navigation-links/potemplate.txt
index 164754b..bd2015f 100644
--- a/lib/lp/translations/stories/navigation-links/potemplate.txt
+++ b/lib/lp/translations/stories/navigation-links/potemplate.txt
@@ -24,7 +24,7 @@ Taking an IPOTemplate for ISourcePackage context:
     >>> admin_browser.open(
     ...     'http://translations.launchpad.test/ubuntu/hoary/+source/'
     ...     'evolution/+pots/evolution-2.2')
-    >>> print(admin_browser.url)
+    >>> print(admin_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
 
 The Application tabs should point to IDistributionSourcePackage URLs.
diff --git a/lib/lp/translations/stories/productseries/xx-productseries-translations.txt b/lib/lp/translations/stories/productseries/xx-productseries-translations.txt
index b2b562c..5ce1df9 100644
--- a/lib/lp/translations/stories/productseries/xx-productseries-translations.txt
+++ b/lib/lp/translations/stories/productseries/xx-productseries-translations.txt
@@ -88,7 +88,7 @@ count links to the correctly filtered PO file pages.
     >>> logout()
 
     >>> browser.open(frobnicator_trunk_url)
-    >>> print_language_stats(browser)
+    >>> print_language_stats(browser)  # noqa
     Language                   Untranslated    Unreviewed
     Serbian                               6             5
     Untranslated link: /frobnicator/trunk/+pots/template1/sr/+translate?show=untranslated
@@ -391,4 +391,5 @@ page togheter with link for uploading a template from that series
 
     >>> print(admin_browser.getLink(
     ... 'automatic', url='/evolution/evo-new/+translations-settings').url)
+    ... # noqa
     http://translations.launchpad.test/evolution/evo-new/+translations-settings
diff --git a/lib/lp/translations/stories/standalone/xx-language.txt b/lib/lp/translations/stories/standalone/xx-language.txt
index 25dfa68..438f687 100644
--- a/lib/lp/translations/stories/standalone/xx-language.txt
+++ b/lib/lp/translations/stories/standalone/xx-language.txt
@@ -98,7 +98,7 @@ From the top languages page, anyone can find languages.
     >>> text_search = browser.getControl(name='field.search_lang')
     >>> text_search.value = 'Spanish'
     >>> browser.getControl('Find language', index=0).click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/+languages/+index?field.search_lang=Spanish
 
 
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-auto-alt-languages.txt b/lib/lp/translations/stories/standalone/xx-pofile-auto-alt-languages.txt
index add4f2d..a5ccfeb 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-auto-alt-languages.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-auto-alt-languages.txt
@@ -11,7 +11,7 @@ should have the Spanish language selected as its alternate, by default.
     >>> browser.open(
     ...     'http://translations.launchpad.test/evolution/trunk/+pots/'
     ...     'evolution-2.2/es_MX/+translate')
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/es_MX/+translate
 
     >>> browser.getControl(name='field.alternative_language', index=0).value
@@ -23,7 +23,7 @@ not show pt by default for pt_BR translators:
     >>> browser.open(
     ...     'http://translations.launchpad.test/evolution/trunk/+pots/'
     ...     'evolution-2.2/pt_BR/+translate')
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/pt_BR/+translate
 
     >>> browser.getControl(name='field.alternative_language', index=0).value
@@ -35,7 +35,7 @@ French!
     >>> browser.open(
     ...     'http://translations.launchpad.test/evolution/trunk/+pots/'
     ...     'evolution-2.2/fr/+translate')
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/fr/+translate
 
     >>> browser.getControl(name='field.alternative_language', index=0).value
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt
index 497cf73..5a9552e 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt
@@ -27,5 +27,5 @@ Submit the form.
 We should be redirected to the next page because the validation didn't get
 it as an error.
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?batch=1&memo=13&start=13
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt
index 553f9d6..010c251 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt
@@ -32,7 +32,7 @@ And submit the form.
 
 We remain at the same page:
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5
 
 The valid translation is stored:
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt
index 91b15e0..f977e54 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt
@@ -20,7 +20,7 @@ textarea, and
 
 We are in next form page.
 
-    >>> print(user_browser.url)
+    >>> print(user_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount/hr/+translate?memo=10&start=10
 
 Let's go back to the modified message.
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt
index 3f79034..cab3aef 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt
@@ -41,7 +41,7 @@ a translator needs to mark the needs review checkbox.
     >>> user_browser.getControl(
     ...     name='msgset_130_es_translation_0_new').value = "New suggestion"
     >>> user_browser.getControl('Save & Continue').click()
-    >>> print(user_browser.url)
+    >>> print(user_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/2/+translate
 
 The needs review flag is unset when we go back to the previous message.
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt
index d92801d..1ee8394 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt
@@ -41,7 +41,7 @@ answer should have exactly those strings.
     >>> browser.getControl(
     ...     name='msgset_149_es_translation_0_new').value = '\r\nfoo\r\n\r\n'
     >>> browser.getControl(name='submit_translations').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1
     >>> print(find_tag_by_id(
     ...     browser.contents, 'msgset_149_es_translation_0_new'))
@@ -61,7 +61,7 @@ change the test, to be 100% sure that the textarea content is the right one.
     >>> browser.getControl(name='msgset_149_es_translation_0_new').value = (
     ...     'foo')
     >>> browser.getControl(name='submit_translations').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1
     >>> print(find_tag_by_id(
     ...     browser.contents,
@@ -85,7 +85,7 @@ Launchpad adds it automatically.
 
 We were redirected to the next form, the translation was accepted.
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/es/+translate?batch=1
 
 Get previous page to check that the save translation is the right one.
@@ -116,7 +116,7 @@ Now, we do the right submit, with one trailing new line...
 
 We were redirected to the next form, the translation was accepted.
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/es/+translate?batch=1
 
 Get previous page to check that the save translation is the right one.
@@ -147,7 +147,7 @@ Last check, the user sends two new line chars instead of just one...
 
 We were redirected to the next form, the translation was accepted.
 
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/es/+translate?batch=1
 
 Get previous page to check that the save translation is the right one.
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt
index ed6edf8..f8882b6 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt
@@ -20,7 +20,7 @@ this test a tripwire for the number potentially getting out of hand.
     >>> anon_browser.open(
     ...     'http://translations.launchpad.test/ubuntu/hoary/+source/'
     ...     'evolution/+pots/evolution-2.2/es/+translate')
-    >>> anon_browser.url
+    >>> anon_browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate'
     >>> print(anon_browser.contents)
     <...
@@ -38,7 +38,7 @@ queries, but it still shouldn't run in the hundreds.
     >>> admin_browser.open(
     ...     'http://translations.launchpad.test/ubuntu/hoary/+source/'
     ...     'evolution/+pots/evolution-2.2/es/+translate')
-    >>> admin_browser.url
+    >>> admin_browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate'
 
 XXX: JeroenVermeulen 2008-06-20 bug=241394: This has just started
diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-export.txt b/lib/lp/translations/stories/standalone/xx-potemplate-export.txt
index 54dfa56..4b69f55 100644
--- a/lib/lp/translations/stories/standalone/xx-potemplate-export.txt
+++ b/lib/lp/translations/stories/standalone/xx-potemplate-export.txt
@@ -47,7 +47,7 @@ added to the export queue and individual requests are added for the PO files.
     >>> browser.getControl('Everything').selected = True
     >>> browser.getControl('Format:').value = ['PO']
     >>> browser.getControl('Request Download').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
 
     >>> print_feedback_messages(browser.contents)
@@ -62,7 +62,7 @@ This is a no-op: (See bug https://launchpad.net/rosetta/+bug/1558)
     >>> browser.getControl('The PO template').selected = True
     >>> browser.getControl('Format:').value = ['PO']
     >>> browser.getControl('Request Download').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
 
     >>> print_feedback_messages(browser.contents)
diff --git a/lib/lp/translations/stories/standalone/xx-series-templates.txt b/lib/lp/translations/stories/standalone/xx-series-templates.txt
index 3fe1eeb..e9658b0 100644
--- a/lib/lp/translations/stories/standalone/xx-series-templates.txt
+++ b/lib/lp/translations/stories/standalone/xx-series-templates.txt
@@ -127,7 +127,7 @@ Clicking on a template name will take the user to that template's overview
 page.
 
     >>> admin_browser.getLink('pmount').click()
-    >>> print(admin_browser.url)
+    >>> print(admin_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount
 
 Clicking on 'Edit' will take the user to the page to edit the template
diff --git a/lib/lp/translations/stories/standalone/xx-translation-credits.txt b/lib/lp/translations/stories/standalone/xx-translation-credits.txt
index f3a3237..6e73ebd 100644
--- a/lib/lp/translations/stories/standalone/xx-translation-credits.txt
+++ b/lib/lp/translations/stories/standalone/xx-translation-credits.txt
@@ -60,7 +60,7 @@ displayed credits once we submit the translation.
     ...     name='msgset_198_sr_translation_0_new')
     >>> inputfield.value = 'Test translation'
     >>> browser.getControl('Save & Continue').click()
-    >>> print(browser.url)
+    >>> print(browser.url)  # noqa
     http://translations.launchpad.test/alsa-utils/trunk/+pots/alsa-utils/sr/+translate
 
 Translation has been updated.
diff --git a/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt b/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt
index cd31e56..8286bfc 100644
--- a/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt
+++ b/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt
@@ -1138,7 +1138,7 @@ cannot be handled.
     >>> upload = admin_browser.getControl(name='file')
     >>> upload.add_file(BytesIO(af_file), 'application/msword', 'af.doc')
     >>> admin_browser.getControl('Upload').click()
-    >>> print(admin_browser.url)
+    >>> print(admin_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
 
     >>> for tag in find_tags_by_class(admin_browser.contents, 'error'):
@@ -1151,7 +1151,7 @@ With all the correct information, a file can be uploaded.
     >>> upload = admin_browser.getControl(name='file')
     >>> upload.add_file(BytesIO(af_file), 'application/x-po', 'af.po')
     >>> admin_browser.getControl('Upload').click()
-    >>> print(admin_browser.url)
+    >>> print(admin_browser.url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
 
     >>> for tag in find_tags_by_class(admin_browser.contents, 'message'):
diff --git a/lib/lp/translations/stories/translations/xx-translations.txt b/lib/lp/translations/stories/translations/xx-translations.txt
index 377a9bf..9c26cb1 100644
--- a/lib/lp/translations/stories/translations/xx-translations.txt
+++ b/lib/lp/translations/stories/translations/xx-translations.txt
@@ -134,9 +134,9 @@ pofile) for evolution-2.2
     True
     >>> six.ensure_str('Translatable templates') in browser.contents
     True
-    >>> print(browser.getLink('evolution-2.2').url)
+    >>> print(browser.getLink('evolution-2.2').url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/hr/+translate
-    >>> print(browser.getLink('man').url)
+    >>> print(browser.getLink('man').url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/man/hr/+translate
 
 pmount and pkgconf-mozilla are not in this page, because it belongs to the
@@ -157,9 +157,9 @@ Let's go to next page.
 
 Now, we have the other man and pkgconf-mozilla:
 
-    >>> print(browser.getLink('man').url)
+    >>> print(browser.getLink('man').url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/man/hr/+translate
-    >>> print(browser.getLink('pkgconf-mozilla').url)
+    >>> print(browser.getLink('pkgconf-mozilla').url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/+pots/pkgconf-mozilla/hr/+translate
 
 Let's go to next page.
@@ -168,7 +168,7 @@ Let's go to next page.
 
 And finally, we will get pmount.
 
-    >>> print(browser.getLink('pmount').url)
+    >>> print(browser.getLink('pmount').url)  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount/hr/+translate
 
 With its latest translator.
@@ -260,7 +260,7 @@ The template title points to the general translate page:
     >>> unfiltered = all_links[0]
     >>> print(extract_text(unfiltered))
     evolution-2.2
-    >>> print(extract_link_from_tag(unfiltered, base_href))
+    >>> print(extract_link_from_tag(unfiltered, base_href))  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate
 
 The number of untranslated entries points to the same page, which now show
@@ -272,7 +272,7 @@ has the right filter preselected.
     15
     >>> untranslated_link = extract_link_from_tag(untranslated, base_href)
     >>> browser.open(untranslated_link)
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated'
     >>> print(browser.getControl(name='show', index=1).value)
     ['untranslated']
@@ -285,7 +285,7 @@ with the 'with new suggestions' filter selected.
     1
     >>> unreviewed_link = extract_link_from_tag(unreviewed, base_href)
     >>> browser.open(unreviewed_link)
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions'
     >>> print(browser.getControl(name='show', index=1).value)
     ['new_suggestions']
@@ -298,7 +298,7 @@ The number of updated entries points to the translation page with the
     1
     >>> updated_link = extract_link_from_tag(updated, base_href)
     >>> browser.open(updated_link)
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu'
     >>> print(browser.getControl(name='show', index=1).value)
     ['changed_in_ubuntu']
@@ -434,7 +434,7 @@ Language title points to the general translate page:
     >>> unfiltered = all_links[0]
     >>> print(extract_text(unfiltered))
     Spanish
-    >>> print(extract_link_from_tag(unfiltered, base_href))
+    >>> print(extract_link_from_tag(unfiltered, base_href))  # noqa
     http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate
 
 The number of untranslated entries points to the same page, which now shows
@@ -446,7 +446,7 @@ the right filter preselected.
     15
     >>> untranslated_link = extract_link_from_tag(untranslated, base_href)
     >>> browser.open(untranslated_link)
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated'
     >>> print(browser.getControl(name='show', index=2).value)
     untranslated
@@ -459,7 +459,7 @@ with the 'with new suggestions' filter selected.
     1
     >>> unreviewed_link = extract_link_from_tag(unreviewed, base_href)
     >>> browser.open(unreviewed_link)
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions'
     >>> print(browser.getControl(name='show', index=2).value)
     new_suggestions
@@ -472,7 +472,7 @@ The number of updated entries points to the translation page with the
     1
     >>> updated_link = extract_link_from_tag(updated, base_href)
     >>> browser.open(updated_link)
-    >>> browser.url
+    >>> browser.url  # noqa
     'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu'
     >>> print(browser.getControl(name='show', index=2).value)
     changed_in_ubuntu
diff --git a/lib/lp/translations/utilities/doc/gettext_mo_exporter.txt b/lib/lp/translations/utilities/doc/gettext_mo_exporter.txt
index bce7a5d..04ea523 100644
--- a/lib/lp/translations/utilities/doc/gettext_mo_exporter.txt
+++ b/lib/lp/translations/utilities/doc/gettext_mo_exporter.txt
@@ -132,7 +132,7 @@ get an export error exception:
 
     >>> mofile = compiler.compile(b'''
     ... blah
-    ... ''')
+    ... ''')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationexporter.UnknownTranslationExporterError: ...
diff --git a/lib/lp/translations/utilities/doc/gettext_po_exporter.txt b/lib/lp/translations/utilities/doc/gettext_po_exporter.txt
index 6edf323..e5c8e84 100644
--- a/lib/lp/translations/utilities/doc/gettext_po_exporter.txt
+++ b/lib/lp/translations/utilities/doc/gettext_po_exporter.txt
@@ -154,7 +154,7 @@ It's time to test the wrapping with the '-' char:
     ...     TranslationConstants.SINGULAR_FORM,
     ...     u"WARNUNG: Unsichere Zugriffsrechte des umgebenden Verzeichnisses"
     ...         u" des Home-Verzeichnisses `%s'\n")
-    >>> print(export_translation_message(translation_message))
+    >>> print(export_translation_message(translation_message))  # noqa
     msgid "WARNING: unsafe enclosing directory permissions on homedir `%s'\n"
     msgstr ""
     "WARNUNG: Unsichere Zugriffsrechte des umgebenden Verzeichnisses des Home-"
diff --git a/lib/lp/translations/utilities/doc/gettext_po_parser.txt b/lib/lp/translations/utilities/doc/gettext_po_parser.txt
index d1dd2b9..b6d933c 100644
--- a/lib/lp/translations/utilities/doc/gettext_po_parser.txt
+++ b/lib/lp/translations/utilities/doc/gettext_po_parser.txt
@@ -16,7 +16,7 @@ POParser
 PO files with empty headers are not allowed.
 
     >>> parser = POParser()
-    >>> parser.parse(b'msgid "foo"\nmsgstr ""\n')
+    >>> parser.parse(b'msgid "foo"\nmsgstr ""\n')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatSyntaxError: ...
@@ -24,7 +24,7 @@ PO files with empty headers are not allowed.
 PO files with context after msgids are reported as broken.
 
     >>> parser.parse(b'msgid ""\nmsgstr ""\n'
-    ...              b'msgid "blah"\nmsgctxt "foo"\nmsgstr "bar"\n')
+    ...              b'msgid "blah"\nmsgctxt "foo"\nmsgstr "bar"\n')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatSyntaxError: ...
@@ -33,7 +33,7 @@ And a msgctxt followed by msgctxt is caught as well.
 
     >>> parser.parse(b'msgid ""\nmsgstr ""\n'
     ...              b'msgctxt "foo"\nmsgctxt "foo1"\n'
-    ...              b'msgid "blah"\nmsgstr "bar"\n')
+    ...              b'msgid "blah"\nmsgstr "bar"\n')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatSyntaxError: ...
@@ -42,21 +42,21 @@ When a string is followed by non-string, non-space data, it is caught
 as an error.
 
     >>> parser.parse(b'msgid ""\nmsgstr "something"\n'
-    ...              b'"foo"  whatever\n')
+    ...              b'"foo"  whatever\n')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatSyntaxError: ...Extra content found after string...
 
 Unrecognized escape sequences are caught as well.
 
-    >>> parser.parse(b'msgid "\!"\nmsgstr ""\n')
+    >>> parser.parse(b'msgid "\!"\nmsgstr ""\n')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatSyntaxError: ...Unknown escape sequence...
 
 Unclosed strings (missing closing quotes) are caught.
 
-    >>> parser.parse(b'msgid ""\nmsgstr "\n')
+    >>> parser.parse(b'msgid ""\nmsgstr "\n')  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatSyntaxError: ...String not terminated...
@@ -322,7 +322,7 @@ errors occur:
     ... msgstr "abcdef"
     ... """  # noqa
 
-    >>> parser.parse(content + chunk2)
+    >>> parser.parse(content + chunk2)  # noqa
     Traceback (most recent call last):
     ...
     lp.translations.interfaces.translationimporter.TranslationFormatInvalidInputError: Line 13: Could not decode input from UTF-8